繁体   English   中英

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

[英]What is the size of sizeof(vector)? C++

因此,用户在 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++ 很陌生,所以如果我犯了一个愚蠢的错误,我深表歉意)

使用vector::size()方法: i < v.size()

sizeof运算符在编译时返回对象或表达式的字节大小,对于std::vector是恒定的。

http://cppreference.com是查找STL容器成员功能的好网站。

话虽如此,您正在寻找vector::size()成员函数。

for (int i = 0; i < v.size(); i++)
{
   cout << v[i] << endl;
}

如果您可以使用支持C ++ 11以上版本的编译器,则可以使用基于范围的新for循环

for(auto i : v) 
{
   cout << i << endl;
}

输入值后如何确定向量的大小?

v.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++)
                   ^^^^^^^^^   ^^^^^^^^^^^^^^

被除以的两个值可能不是您所期望的。

一个std::vector是一个类。 它不是实际数据,而是管理数据的类。

使用std::vector.size()获取实际数据的大小。

Coliru示例: http ://coliru.stacked-crooked.com/a/de0bffb1f4d8c836

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM