2017-02-05 167 views
3

正确初始化一个向量当我编译下面的代码(使用-std = C++ 11编译器标志)时,我得到(唯一的)错误消息:“'vec'是不是类,名称空间或枚举“。如何从std :: vector <>

#include <vector> 
#include <iterator> 

int main(){ 

std::vector<int> vec(10,1); 
vec::iterator it; 

return 0; 
} 

由于我没有得到任何其他的错误消息,对我来说这意味着所谓的“VEC”一些对象进行了初始化,但不能作为载体,但作为别的东西这是不是一个类和其范围操作符因此不能使用。

据我的理解是,我用下面的构造(http://en.cppreference.com/w/cpp/container/vector/vector):

vector(size_type count, 
     const T& value, 
     const Allocator& alloc = Allocator()); 

凡说,此构造“构造与价值价值元素的计数副本容器”,所以我希望创建了一个带有10个“1”副本的向量,但是我一定误解了一些东西,因此就是这个问题。

我的推理出错了,上面代码中的错误来自哪里?

回答

3

范围操作符用于访问命名空间或类中的元素。 vec不是一个类,而是一个对象。你必须写std::vector<int>::iterator。你也可以通过使用auto推导出一个变量类型:auto it = vec.begin()等于std::vector<int>::iterator it = vec.begin()

7

你的矢量初始化很好。但为了指迭代器类型,您需要使用矢量的类型,而不是一个对象:

std::vector<int>::iterator it; 
相关问题