我遇到了一个非常奇怪的错误,这是我以前从未遇到过的,我正在尝试在声明时初始化一个 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/