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 ++将抽象类型的动态分配对象传递给函数并存储在向量中[重复]

C ++类型的问题[重复]

在c ++中给出两个整数向量(相同的大小和类型),我想从最小到最大的元素对一个进行排序并更改第二个向量的顺序[重复]

编译类型向量类的私有成员时出错 - C++ [重复]

将指针向量传递给c ++中的函数[重复]

C ++中的Lambda函数,参数和逻辑[重复]