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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dimon 128500
0 / 0 / 0
Регистрация: 09.05.2010
Сообщений: 9
#1

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

31.10.2010, 17:50. Просмотров 1017. Ответов 5
Метки нет (Все метки)

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

#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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2010, 17:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Заполнение вектора структурами. Найдите ошибку. (C++):

Найти ошибку в работе со структурами - C++
#include &lt;iostream&gt; struct string { char* p; int size; string(int size){p = new char;} ~string(){delete p;} string&amp;...

Заполнение вектора в цикле - C++
Попробовал так (для освоения материала) #include &lt;vcl.h&gt; #include &lt;vector&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; //sort ...

Заполнение вектора векторов - C++
Изучаю вектора, поискал похожие темы до 14 года, вроде бы разные варианты перепробовал из поиска, подскажите, что не так, почему не...

Заполнение вектора из файла - C++
Ребята, подскажите, как считать из файла числа типа double в вектор и вывести на экран? А также потом записать в файл?

заполнение вектора по модулю - C++
Заполняет вектор по модулю 2: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; int main() { ...

Заполнение вектора случайными числами - C++
Как сделать сортировку? Желательно подробно. И почему рандомные числа одни и те же? #include &lt;windows.h&gt; #include &lt;sstream&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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;
}
Часть ошибок убирает, про остальное сам пока не знаю...
0
papochka
33 / 33 / 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);
}
0
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;
}
Как бы вынести заполнение структуры данными в функцию только не знаю...
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 года"};
0
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 года"));
Единственный момент - в конструкторе копирования и операторе равно реализуйте перенос данных, а не ретрансляцию указателей - иначе будете получать ошибку сигментации.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2010, 10:55
Привет! Вот еще темы с ответами:

Вектора, заполнение двумерного массива - C++
Здравствуйте дамы и господа. Вопрос конечно простой, но в тупик меня поставил и не могу понять как быть в данной ситуации. Но все по...

Заполнение вектора случайными числами - C++
как с помощью функции rand() заполнить вектор случайными числами из промежутка, причем границы промежутка пользователь указывает...

Заполнение вектора другим вектором - C++
Есть два уже созданных вектора v и v2, со следующим содержимым: vector&lt;int&gt; v = {5, 3, 1, 3, 5, 2, 5, 3, 1, 3, 5, 2, 5}; vector&lt;int&gt; v2...

Массив: Заполнение двумерного вектора с клавиатуры - C++
Доброго времени суток. Хотелось бы узнать, возможно ли заполнение двумерного вектора с клавиатуры? Имеется ввиду ввод количества...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.11.2010, 10:55
Ответ Создать тему
Опции темы

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