c++ - Vector 不是 std 的成员,包含所有内容

标签 c++ c++11 vector stl std

我遇到了一个非常奇怪的错误,这是我以前从未遇到过的,我正在尝试在声明时初始化一个 vector ,如下所示:

  vector <int> myVector (5,4,3,4); 

它给我一个错误,说它找不到与该函数匹配的调用,但是,如果我只插入 2 个数字,它不会给我一个错误。

经过进一步调查,当我尝试调用时,即使是这段代码也会抛出 vector is not member of std or that myVector is not a type

myVector.push_back(4);

现在这里的代码告诉我 vector 不是 std 的成员,没有找到匹配的函数,具有这种性质......

#include <vector>

using std::vector;

const std::vector<int> newvector;
std::newvector.push_back(5);

int main()
{
}

给出错误:命名空间 std 中的新 vector 未命名类型

最佳答案

std::newvector.push_back(5);

因为 newvector 是一个变量,所以它不在命名空间 std 中。

对于这种情况:

vector <int> myVector (5,4,3,4); 

如果您在这种情况下只使用两个值 (5,4),它将创建一个大小为 5 的 vector ,并且每个元素都初始化为 4( vector 构造的一种形式)。如果您需要使用值列表初始化 vector ,您可以尝试从 C++11 开始统一初始化,如下所示:

std::vector <int> myVector{5,4,3,4};

一些统一初始化的例子可以在这里找到:uniform initialization and other C++11 features

关于c++ - Vector 不是 std 的成员,包含所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22468713/

相关文章:

c++ - 正确获取模板化模板函数声明

c++ - 存储和重用 vector 迭代器值是否安全?

c++ - 不明确的调用 - 模板化函数

c++ - 如何获取 std::deque 中元素的索引

c++ - 别名模板的包扩展

c++ - 一般开始,加上 decltype 考虑本地 using-declaration

C++计算数字(不是字符串)之间的空格

java - 从 vector < vector <字符串>>动态更新JTable

c++ - 我如何使这个程序更小、更高效?

c++ - clang++ 8.0.1 自分配重载警告