«список векторов целых чисел» - возможно ли это? - PullRequest
1 голос
/ 08 января 2012

Можно ли использовать шаблон внутри шаблона, список может быть списком чего-либо, а строка может быть строкой чего-либо, поэтому я могу иметь список строк другого типа, например int?

Первое, что пришло в голову:

std::list<std::vector<int>> listOfVectorsOfIntegers;

К сожалению, это не удалось, поэтому мне интересно, есть ли способ сделать это на законных основаниях?

Edit: Извините, я на самом деле не использовал строку в моем случае, просто набрал ее для случайного контейнера, не считая, что это не шаблон. В моем случае проблема заключалась в использовании >> вместо>>, добавление пустого пространства исправляет это.

Ответы [ 4 ]

8 голосов
/ 08 января 2012

std::string сам по себе не является шаблоном класса

Возможно, вам понадобится один из них:

std::list<std::vector<int>>   a;
std::vector<std::vector<int>> b;
std::list<std::list<int>>     c;

В C ++ 03 и C ++ 98 - >>должен быть разделен пробелом;в C ++ 11 такой необходимости нет.

1 голос
/ 08 января 2012
std::list<std::basic_string<int> > listOfStringsOfIntegers;
0 голосов
/ 08 января 2012

std :: string не является шаблоном класса, вы, вероятно, хотите вместо него использовать std :: vector или std :: list.Но ответ - да.

У вас может быть такое объявление:

std::list<std::list<int> > myList;

Важно иметь пробел между двумя символами >, в противном случаекомпилятор этого не поймет.(РЕДАКТИРОВАТЬ: я говорю о старом стандарте C ++ здесь. Это не должно быть проблемой в C ++ 11.)

0 голосов
/ 08 января 2012

std::string не является шаблоном класса.Это typedef для конкретного экземпляра класса шаблона: это typedef для std::basic_string<char>.Если вам нужна строка типа int, вы должны использовать std::basic_string<int>.(Я не говорю, что это хорошая идея, но это возможно.)

И не забудьте вставить пробел между > и >, чтобы предотвратить его синтаксический анализ как >>оператор.

std::list<std::basic_string<int> > listOfStringsOfIntegers;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...