因此用户在for循环中输入值,向量将其推回,创建自己的索引。问题出现在第二个for循环中,我认为它必须对sizeof(v)/sizeof(vector)
做一些事情。
vector<int> v;
for (int i; cin >> i;)
{
v.push_back(i);
cout << v.size() << endl;
}
for (int i =0; i < sizeof(v)/sizeof(vector); i++)
{
cout << v[i] << endl;
}
输入值后如何确定向量的大小? (我对C ++很陌生,所以如果我犯了一个愚蠢的错误,我道歉)
答案 0 :(得分:5)
使用vector::size()
方法:i < v.size()
。
sizeof
运算符在编译时返回对象或表达式的字节大小,对于std::vector
是常量。
答案 1 :(得分:3)
http://cppreference.com是查找STL容器成员函数的绝佳网站。
据说你正在寻找vector::size()
成员函数。
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << endl;
}
如果您拥有支持C ++ 11的编译器,则可以使用新的range based for loops:
for(auto i : v)
{
cout << i << endl;
}
答案 2 :(得分:1)
std::vector
是一个类。它不是实际数据,而是管理它的类。
使用std::vector.size()
获取实际数据的大小。
Coliru示例: http://coliru.stacked-crooked.com/a/de0bffb1f4d8c836
答案 3 :(得分:1)
输入值后如何确定矢量的大小?
v.size()是v中元素的数量。因此, 第二个循环的另一种风格,很容易理解
for (int i=0; i<v.size(); ++i)
您可能会感兴趣的'尺寸'功能的另一个方面: 在Ubuntu 15.10,g ++ 5.2.1,
使用32字节类UI224,sizeof(UI224)报告32(如预期的那样)
请注意
sizeof(std::vector<UI224>) with 0 elements reports 24
sizeof(std::vector<UI224>) with 10 elements reports 24
sizeof(std::vector<UI224>) with 100 elements reports 24
sizeof(std::vector<UI224>) with 1000 elements reports 24
另请注意,
sizeof(std::vector<uint8_t> with 0 elements reports 24
(更新)
因此,在你的行
for (int i =0; i < sizeof(v) / sizeof(vector); i++)
^^^^^^^^^ ^^^^^^^^^^^^^^
被划分的2个值可能不是您所期望的。