Форум программистов, компьютерный форум CyberForum.ru

Заполнение вектора структурами. Найдите ошибку. - C++

Восстановить пароль Регистрация
 
Dimon 128500
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 9
31.10.2010, 17:50     Заполнение вектора структурами. Найдите ошибку. #1
Требуется заполнить вектор структурами и вывести на печать.
Просто громадное количество ошибок. Понимание работы этой программы необходимо для выполнения более сложного задания.

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <fstream>
#include <algorithm>
#include <stdlib.h>

using namespace std;
int main()
{

vector<DataStruct>v;
vector<DataStruct>::iterator Iter;

typedef struct
{
int key1;
int key2;
string str;
}DataStruct;

v.push_back(DataStuct(1, 2, "1 января 2009 года"));
v.push_back(DataStuct(3, 4, "2 января 2010 года"));
v.push_back(DataStuct(5, 6, "3 января 2011 года"));

for (Iter = v.begin(); Iter != v.end(); Iter++) cout << *Iter <<" "; cout<<endl;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2010, 17:50     Заполнение вектора структурами. Найдите ошибку.
Посмотрите здесь:

Заполнение вектора другим вектором C++
C++ Лямбда: заполнение вектора случайными числами
C++ Найти ошибку в работе со структурами
C++ Заполнение вектора функцией copy из бинарного файла
C++ Заполнение вектора пользоватьельского типа данных
заполнение вектора по модулю C++
Заполнение элементов вектора рандомными числами без повторений C++
C++ Заполнение вектора из файла
Заполнение вектора в цикле C++
Заполнение вектора случайными числами C++
Массив: Заполнение двумерного вектора с клавиатуры C++
Заполнение вектора случайными числами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nevecap
11 / 11 / 1
Регистрация: 18.10.2010
Сообщений: 59
31.10.2010, 18:31     Заполнение вектора структурами. Найдите ошибку. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <fstream>
#include <algorithm>
#include <stdlib.h>
 
using namespace std;
typedef struct 
{
int key1;
int key2;
string str;
} DataStruct;
int main()
{
vector<DataStruct>v;
vector<DataStruct>::iterator Iter;
 
//v.push_back(key1 = 1, key2 = 2, str = "1 января 2009 года"});
//v.push_back({3, 4, "2 января 2010 года"});
//v.push_back({5, 6, "3 января 2011 года"});
 
//for (Iter = v.begin(); Iter != v.end(); Iter++) cout << *Iter <<" "; cout<<endl;
return 0;
}
Часть ошибок убирает, про остальное сам пока не знаю...
papochka
 Аватар для papochka
32 / 32 / 2
Регистрация: 14.11.2009
Сообщений: 137
31.10.2010, 19:28     Заполнение вектора структурами. Найдите ошибку. #3
а если что-то типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
....
 
typedef struct 
{
int key1;
int key2;
string str;
} DataStruct;
int main()
{
DataStruct Dstruct;
Dstruct.key1 = ...
Dstruct.key2 = ...
 
vector<DataStruct>v;
...
v.push_back(Dstruct);
}
Nevecap
11 / 11 / 1
Регистрация: 18.10.2010
Сообщений: 59
31.10.2010, 19:40     Заполнение вектора структурами. Найдите ошибку. #4
Да, как-то так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <fstream>
#include <algorithm>
#include <stdlib.h>
 
using namespace std;
typedef struct 
{
int key1;
int key2;
string str;
} DataStruct;
void print(DataStruct a)
{   
    cout << "Key1: " << a.key1 << "\nKey2: " << a.key2 << "\nStr: " << a.str << endl;
}
int main()
{
vector<DataStruct>v;
vector<DataStruct>::iterator Iter;
DataStruct a;
a.key1 = 1;
a.key2 = 2;
a.str = "test1";
v.push_back(a);
a.key1 = 3;
a.key2 = 4;
a.str = "test2";
v.push_back(a);
a.key1 = 5;
a.key2 = 6;
a.str = "test3";
v.push_back(a);
for (Iter = v.begin(); Iter != v.end(); Iter++) print(*Iter);//cout << *Iter <<" "; cout<<endl;
return 0;
}
Как бы вынести заполнение структуры данными в функцию только не знаю...
Svett
0 / 0 / 0
Регистрация: 09.04.2010
Сообщений: 3
31.10.2010, 20:00     Заполнение вектора структурами. Найдите ошибку. #5
Попробуй так инициализировать:
Datasrtruct obj1={1, 2, "1 января 2009 года"}, obj2={3, 4, "2 января 2010 года"}, obj3={5, 6, "3 января 2011 года"};
OdNairy
 Аватар для OdNairy
7 / 7 / 1
Регистрация: 07.02.2010
Сообщений: 22
11.11.2010, 10:55     Заполнение вектора структурами. Найдите ошибку. #6
Мне кажется, тут стоит поступить немного по-другому:
Вместо объявления:
C++
1
vector<DataStruct>v;
объявите вектор указателей, добавьте конструктор с необходимыми параметрами и выполняйте, что-то такое:
C++
1
2
3
vector<DataStruct*>v;
v.push_back(new DataStruct(18, 0, "9 августа 2009 года"));
v.push_back(new DataStruct(19, 3, "11 ноября 2010 года"));
Единственный момент - в конструкторе копирования и операторе равно реализуйте перенос данных, а не ретрансляцию указателей - иначе будете получать ошибку сигментации.
Yandex
Объявления
11.11.2010, 10:55     Заполнение вектора структурами. Найдите ошибку.
Ответ Создать тему
Опции темы

Текущее время: 12:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru