C++:“设置”和“矢量” "尽管 #include 声明但未声明

发布于 2025-01-04 20:33:50 字数 506 浏览 0 评论 0 原文

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

。如果能帮助解决这个问题,我们将不胜感激。
彼得.

I am using Netbeans 7.1 on Ubuntu 11.04.

The following call

set< Triangle > V;

gives the error message

error: ‘set’ was not declared in this scope

and the following call

vector< Triangle > ans;

gives the error message

error: ‘vector’ was not declared in this scope

This despite my having

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

at the beginning of the C++ file.

At help resolving this would be greatly appreciated.
Peter.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鹤仙姿 2025-01-11 20:33:50

向量集和映射是 C++ 标准库的一部分,因此您需要使用包含

std::vector< Triangle > ans;

语句或

using namespace std;

在包含语句之后添加来调用向量/集/映射。

Vectors Sets and map are part of the c++ Standard Library so you need to call vector/set/map with

std::vector< Triangle > ans;

or add

using namespace std;

after the include statements.

回忆凄美了谁 2025-01-11 20:33:50

你忘记了命名空间 std :

std::set<三角形>五;
std::向量<三角形>五;

you forgot about namespace std :

std::set< Triangle > V;
std::vector< Triangle > V;

我只土不豪 2025-01-11 20:33:50

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

后一个选项会污染全局名称空间。切勿在头文件中执行此操作(否则,当您包含标头时,会导入整个名称空间),并且仅当您知道它不会导致任何冲突时,才在实现文件中执行此操作。

#include <vector>

int main(...) {
    vector v;      // no worky
    std::vector v; // ok!
}

They live in the std namespace. So, either fully quality the types (std::vector) or use a using statement (using namespace std;).

The latter option pollutes the global namespace. Never do that in a header file (otherwise the entire namespace is imported when you include the header) and only do it in your implementation file if you know that it isn't going to cause any collisions.

#include <vector>

int main(...) {
    vector v;      // no worky
    std::vector v; // ok!
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文