C++:“设置”和“矢量” "尽管 #include 声明但未声明
我在 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++ 文件的开头
。如果能帮助解决这个问题,我们将不胜感激。
彼得.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
向量集和映射是 C++ 标准库的一部分,因此您需要使用包含
语句或
在包含语句之后添加来调用向量/集/映射。
Vectors Sets and map are part of the c++ Standard Library so you need to call vector/set/map with
or add
after the include statements.
你忘记了命名空间 std :
std::set<三角形>五;
std::向量<三角形>五;
you forgot about namespace std :
std::set< Triangle > V;
std::vector< Triangle > V;
它们位于
std
命名空间中。因此,要么完全保证类型的质量(std::vector
),要么使用using
语句(using namespace std;
)。后一个选项会污染全局名称空间。切勿在头文件中执行此操作(否则,当您包含标头时,会导入整个名称空间),并且仅当您知道它不会导致任何冲突时,才在实现文件中执行此操作。
They live in the
std
namespace. So, either fully quality the types (std::vector
) or use ausing
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.