sizeof(vector)的大小是多少?C++

5jvtdoz2  于 2023-02-10  发布在  其他
关注(0)|答案(4)|浏览(152)

所以用户在for循环中输入值,vector会把它推回去,创建自己的索引,问题出现在第二个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++的新手,所以如果我犯了一个愚蠢的错误,我道歉)

lh80um4z

lh80um4z1#

使用vector::size()方法:i < v.size().
sizeof运算符在编译时返回对象或表达式的大小(以字节为单位),对于std::vector而言,该值是常量。

z4bn682m

z4bn682m2#

输入值后,如何确定向量的大小?
size()是v中元素的数量。因此,第二个循环的另一种样式很容易理解

for (int i=0; i<v.size(); ++i)

您可能会对"size"函数的另一个方面感兴趣:在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个值可能不是你所期望的。

hsvhsicv

hsvhsicv3#

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;
}
dwbf0jvd

dwbf0jvd4#

std::vector是一个类,它不是实际的数据,而是管理数据的类。
使用std::vector.size()获取实际数据的大小。
Coliru示例:http://coliru.stacked-crooked.com/a/de0bffb1f4d8c836

相关问题