С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
7 / 4 / 4
Регистрация: 27.03.2017
Сообщений: 131

Сохранение данных в вектор

25.08.2017, 23:00. Показов 2876. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объявление класса:
C++ (Qt)
1
2
3
4
5
6
class Name_value {
public:
    string name;
    int number;
    Name_value() { }
};
Объявление вектора:
C++ (Qt)
1
vector<Name_value> N_m;
Цикл:
C++ (Qt)
1
2
3
4
5
6
7
8
9
for(int i = 0; i < n; ++i)
{
    cout << "Enter the name" << '\n';
    cin >> names;
    N_m.name.push_back(names);
    cout << "Enter the number" << '\n';
    cin >> no;
    N_m.number.push_back(names);
}
Ошибки компиляции:
[QUOTEclang++ -std=c++14 string.cpp -o string
string.cpp:32:7: error: no member named 'name' in 'std::vector<Name_value,
std::allocator<Name_value> >'
N_m.name.push_back(names);
~~~ ^
string.cpp:35:7: error: no member named 'number' in 'std::vector<Name_value,
std::allocator<Name_value> >'
N_m.number.push_back(no);[/QUOTE]
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.08.2017, 23:00
Ответы с готовыми решениями:

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Ввод данных в вектор
Я хочу,чтобы пользователь вводил номер и он сразу записывался в вектор,а не записывать числа в массив и только потом заполнять вектор,но у...

Ввод данных в вектор
Небольшой оффтоп, а как сделать ввод строки (если строка это вектор) с помощью итераторов, то есть размер строки заранее не определен....

5
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
25.08.2017, 23:04
Лучший ответ Сообщение было отмечено CarbonBased как решение

Решение

объявляете объект, заполняете его поля и потом его целиком в вектор суете. как-то так:
C++
1
2
3
4
5
6
7
8
9
for(int i = 0; i < n; ++i)
{
    Name_value nv;
    cout << "Enter the name" << '\n';
    cin >> nv.name;
    cout << "Enter the number" << '\n';
    cin >> nv.number;
    N_m.push_back(nv);
}
1
7 / 4 / 4
Регистрация: 27.03.2017
Сообщений: 131
25.08.2017, 23:31  [ТС]
Цитата Сообщение от DU3 Посмотреть сообщение
объявляете объект, заполняете его поля и потом его целиком в вектор суете. как-то так:
Спасибо. А вы не могли бы сказать, по какой причине я не могу осуществить первоначальный вариант?
-0.50
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
25.08.2017, 23:37
потому что так обращаться с вектором нельзя.
вектор это массив. в него можно что-то засунуть или обратится к засунутому по индексу.
N_m.name - вот это вот попытка обратится к мемберу вектора name. у него такого просто нет.

Ошика из той же серии, что и:
C++
1
2
3
Name_value nv;
nv.abraKadabra = 0; // ошибка. такого мембера в структуре нет.
nv.superPuper.push_back(0); // аналогично предыдущему.
1
7 / 4 / 4
Регистрация: 27.03.2017
Сообщений: 131
25.08.2017, 23:39  [ТС]
И еще вопрос. Каким образом я могу применить функцию сортировки к классам?
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
25.08.2017, 23:44
нужно алгоритму сортировки задать предикат: функцию, которая принимает два значения и на свое
усмотрение решает, какое из значений больше


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// для сортировки по номеру
auto byNumberPred = [] (const Name_value& lhs, const Name_value& rhs)
{
  return lhs.number < rhs.number;
};
 
// для сортировки по имени
auto byNamePred = [] (const Name_value& lhs, const Name_value& rhs)
{
  return lhs.name < rhs.name;
};
 
std::sort(N_m.begin(), N_m.end(), byNumberPred); 
std::sort(N_m.begin(), N_m.end(), byNamePred);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.08.2017, 23:44
Помогаю со студенческими работами здесь

тип данных вектор
Помогите пожалуйста. Заполняю элементы динамического вектора, подскажите цикл для этого с командой выхода когда захочу. За раннее спасибо

Чтение данных из файла в вектор
Доброго времени суток. Никак не могу разобраться, поиск по форуму не помог. У меня есть функция сохранения вектора в файл if...

Структура данных - статический вектор
Помогите реализовать в моей программе структуру данных статический вектор который используется для хранения объектов каждого производного...

Вектор: хранение данных об игроке
Для хранения данных игрока нужно использовать векторы. Нужно хранить несколько данных, например: ЛОГИН|ПАРОЛЬ|ВОЗРАСТ|УРОВЕНЬ|прочие...

Вектор пользовательского типа данных
Имеется класс: class Students { public: void set_name(string student_name) { name = student_name;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru