C ++: 'set' и 'vector' 'не объявлены, несмотря на операторы #include - PullRequest
1 голос
/ 12 февраля 2012

Я использую Netbeans 7.1 в Ubuntu 11.04.

Следующий звонок

set< Triangle > V;

выдает сообщение об ошибке

error: ‘set’ was not declared in this scope

и следующий звонок

vector< Triangle > ans;

выдает сообщение об ошибке

error: ‘vector’ was not declared in this scope

Это несмотря на то, что у меня

#include <vector>
#include <set>
#include <map>

в начале файла C ++.

При разрешении проблемы это будет очень полезно.
Питер.

Ответы [ 3 ]

6 голосов
/ 12 февраля 2012

Векторы Наборы и карта являются частью стандартной библиотеки c ++, поэтому вам нужно вызвать vector / set / map с помощью

std::vector< Triangle > ans;

или добавить

using namespace std;

после операторов включения.

3 голосов
/ 12 февраля 2012

вы забыли про пространство имен std:

std :: set <Треугольник> V; std :: vector <треугольник> V;

2 голосов
/ 12 февраля 2012

Они живут в пространстве имен std.Таким образом, либо полностью проверяйте типы (std::vector), либо используйте оператор using (using namespace std;).

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

#include <vector>

int main(...) {
    vector v;      // no worky
    std::vector v; // ok!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...