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

подскажите новичку, пожалуйста.. - C++

Восстановить пароль Регистрация
 
alexeyal
0 / 0 / 0
Регистрация: 03.09.2009
Сообщений: 4
03.09.2009, 11:45     подскажите новичку, пожалуйста.. #1
добрый день. заранее извиняюсь за глупый вопрос, но гугл оказался не в курсе. почему не работает код?

C++
1
2
3
4
5
6
7
#include <vector>
int main()
{
struct pair{char ch1; char ch2; int count;};
vector<pair> vr(100500);
return 0;
}
ругается, естессно, на строчку с объявлением вектора, на тип. хотя у страуструпа в книжке имеется один-в-один пример. может я не подключил какой-нибудь необходимый файл? компилятор-gcc, если это имеет значение.
заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
03.09.2009, 12:06     подскажите новичку, пожалуйста.. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <vector>
 
using namespace std;
 
struct ch_pair {
    char ch1;
    char ch2;
    int count;
};
 
int main( void ) {
 
vector<ch_pair> v(100500);
return 0;
 
} // main()
alexeyal
0 / 0 / 0
Регистрация: 03.09.2009
Сообщений: 4
03.09.2009, 12:19  [ТС]     подскажите новичку, пожалуйста.. #3
спасибо огромное, все заработало!

а вот объясните пожалуйста, почему не работало до этого? ведь структура была объявлена локальной в той же функции, где ее предполагалось использовать? по логике все нормально.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
03.09.2009, 12:39     подскажите новичку, пожалуйста.. #4
Цитата Сообщение от alexeyal Посмотреть сообщение
а вот объясните пожалуйста, почему не работало до этого?
Цитата Сообщение от odip Посмотреть сообщение
using namespace std;
А вот, почему!
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
03.09.2009, 12:41     подскажите новичку, пожалуйста.. #5
Еще почему-то имя pair не берет - видимо где-то используется
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
03.09.2009, 12:49     подскажите новичку, пожалуйста.. #6
Цитата Сообщение от odip Посмотреть сообщение
Еще почему-то имя pair не берет - видимо где-то используется
ага
Код
$ man 3 std::pair
std::pair(3)                                                      std::pair(3)

NAME
       std::pair -

SYNOPSIS
Detailed Description
   template<class _T1, class _T2> struct std::pair< _T1, _T2 >
       Definition at line 68 of file stl_pair.h.

   Public Types
       typedef _T1 first_type
       typedef _T2 second_type

   Public Member Functions
       template<class _U1, class _U2> pair (const pair< _U1, _U2 > &__p)
       pair (const _T1 &__a, const _T2 &__b)
       pair ()

   Public Attributes
       _T1 first
       _T2 second
...
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.09.2009, 13:05     подскажите новичку, пожалуйста.. #7
а чем так плохо?

C++
1
vector<pair<char, char> > vr(100500);
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
03.09.2009, 13:07     подскажите новичку, пожалуйста.. #8
А где третье поле в структуре - типа int ?
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
03.09.2009, 13:26     подскажите новичку, пожалуйста.. #9
Цитата Сообщение от odip Посмотреть сообщение
А где третье поле в структуре - типа int ?
тогда это уже не пара будет
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
03.09.2009, 13:26     подскажите новичку, пожалуйста.. #10
Цитата Сообщение от odip Посмотреть сообщение
А где третье поле в структуре - типа int ?
оно называется count. что оно собирается считать? во-вторых, что оно, третье, делает, в "структуре типа ПАРА", т.е. для двоих вроде?

но если оно так уж необходимо, то:

C++
1
vector<pair<pair<char, char>, int> > > vr(100500);
но автору лучше знать что он конструирует.
alexeyal
0 / 0 / 0
Регистрация: 03.09.2009
Сообщений: 4
03.09.2009, 13:35  [ТС]     подскажите новичку, пожалуйста.. #11
using namespace std;

это я, пардоньте, когда сюда писал забыл. и так пробовал, и
C++
1
std::vector
тоже. и pair этот и как pairs, и как ps и еще как-то называл. компилятор именно на объявление вектора ругался, что и вызвало мое недоумение-ведь просто допустим

C++
1
2
3
4
5
struct pair<char pr1; char pr2; int cnt>;
pair para;
para.pr1='a';
para.pr2='b';
para.cnt=1;
работало вполне себе исправно..


а то, что парой называется НЕ пара-это я просто в языке разбираюсь, гоняю всякие полезные мне в будущем штучки. изначально оно было именно парой
Mozart
 Аватар для Mozart
39 / 17 / 1
Регистрация: 21.08.2009
Сообщений: 63
03.09.2009, 14:03     подскажите новичку, пожалуйста.. #12
C++
1
2
3
int main()
{
struct pair{char ch1; char ch2; int count;};
Я бы всетаки старался, чего и вам советую, выносить обьявления структур, классов, фуккций выносить за пределы main()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2009, 14:23     подскажите новичку, пожалуйста..
Еще ссылки по теме:

C++ подскажите новичку добрые друзья(
Подскажите новичку C++
C++ Подскажите новичку где ошибка

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

Или воспользуйтесь поиском по форуму:
alexeyal
0 / 0 / 0
Регистрация: 03.09.2009
Сообщений: 4
03.09.2009, 14:23  [ТС]     подскажите новичку, пожалуйста.. #13
спасибо, учту.
Yandex
Объявления
03.09.2009, 14:23     подскажите новичку, пожалуйста..
Ответ Создать тему
Опции темы

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