【问题标题】:c++: vector does not name a type [duplicate]c ++:向量没有命名类型[重复]
【发布时间】: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 感谢您的评论!

标签: c++ c++11 vector


【解决方案1】:

queue.push_back(2); 应该放在 main 中。

为了澄清,您不能随意放置代码并执行它。声明在 main 之外很好,但这不是声明。

【讨论】:

    【解决方案2】:

    杰是正确的。但是,由于您使用的是 C++11,因此您可以通过实际将其设为初始化来将“初始化”保持在声明附近:

    vector<int> queue = {2};
    

    (live demo)

    顺便说一句,std::vector 是一个奇怪的队列选择。

    【讨论】:

    • 谢谢!我实际上正在尝试排序功能。没有注意到我在 main 之外编写了代码。
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多