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

Wul*_*ite -1 c++ vector

因此,用户在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;
 }
Run Code Online (Sandbox Code Playgroud)

输入值后如何确定矢量的大小?(我对C++很陌生,所以如果我犯了一个愚蠢的错误,我道歉)

owa*_*der 5

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

所述sizeof操作者将返回在编译时对象或表达,这是一个恒定的字节大小std::vector.


278*_*528 5

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

v.size() 是 v 中元素的个数,因此,第二个循环的另一种样式,很容易理解

for (int i=0; i<v.size(); ++i)
Run Code Online (Sandbox Code Playgroud)

您可能会发现“大小”函数的另一个方面很有趣:在 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
Run Code Online (Sandbox Code Playgroud)

还要注意的是

sizeof(std::vector<uint8_t> with    0 elements reports 24 
Run Code Online (Sandbox Code Playgroud)

(更新)

因此,在您的行中

for (int i =0; i < sizeof(v) / sizeof(vector); i++)
                   ^^^^^^^^^   ^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

被划分的 2 个值可能不是您所期望的。