c ++:向量没有命名类型[重复]
Posted
技术标签:
【中文标题】c ++:向量没有命名类型[重复]【英文标题】:c++: vector does not name a type [duplicate] 【发布时间】:2017-04-06 09:30:10 【问题描述】:我提出了一个非常简单但令人沮丧的问题。
#include <vector>
#include <iostream>
using namespace std;
vector <int> queue;
queue.push_back(2);
int main()
cout << queue[0] <<endl;
用g++ -std=c++11 Cpp_test.cpp编译,返回错误
Cpp_test.cpp:51:1: error: ‘queue’ does not name a type
queue.push_back(2);
有人可以帮忙吗?非常感谢!
【问题讨论】:
我没有注意到我已经在 main 之外写了。与向量类型无关。 这不是问题,但是使用using namespace std;
您会冒着编译器还会在全局命名空间中看到 std::queue
的风险,并且对 queue
是否是该模板或您的对象的名称。摆脱using namespace std;
。命名空间的存在是有原因的,将它们吹走最终会烧死你。
@PeteBecker 感谢您的评论!
【参考方案1】:
queue.push_back(2);
应该放在 main 中。
为了澄清,您不能随意放置代码并执行它。声明在 main 之外很好,但这不是声明。
【讨论】:
【参考方案2】:杰是正确的。但是,由于您使用的是 C++11,因此您可以通过实际将其设为初始化来将“初始化”保持在声明附近:
vector<int> queue = 2;
(live demo)
顺便说一句,std::vector
是一个奇怪的队列选择。
【讨论】:
谢谢!我实际上正在尝试排序功能。没有注意到我在 main 之外编写了代码。以上是关于c ++:向量没有命名类型[重复]的主要内容,如果未能解决你的问题,请参考以下文章
C ++将抽象类型的动态分配对象传递给函数并存储在向量中[重复]