1

我在 Ubuntu 11.04 上使用 Netbeans 7.1。

以下调用

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++ 文件的开头。

在帮助解决这个问题将不胜感激。
彼得。

4

3 回答 3

6

Vectors Sets 和 map 是 c++ 标准库的一部分,所以你需要调用 vector/set/map

std::vector< Triangle > ans;

或添加

using namespace std;

在包含语句之后。

于 2012-02-11T20:09:10.713 回答
3

您忘记了命名空间 std :

std::set<三角形> V; std::vector<三角形> V;

于 2012-02-11T20:13:59.537 回答
2

它们存在于std命名空间中。因此,要么完全质量类型 ( std::vector),要么使用using语句 ( using namespace std;)。

后一个选项会污染全局命名空间。永远不要在头文件中这样做(否则当您包含头文件时会导入整个命名空间),并且只有在您知道它不会导致任何冲突时才在您的实现文件中这样做。

#include <vector>

int main(...) {
    vector v;      // no worky
    std::vector v; // ok!
}
于 2012-02-11T20:08:26.993 回答