【发布时间】:2020-06-08 01:51:42
【问题描述】:
我了解到检查一维向量的大小是一件容易的事,因为人们只会写
#include <iostream>
#include <vector>
int main(){
vector <int> v = {1, 2, 3, 4};
cout << v.size() << endl;
cout << sizeof(v)/sizeof(int) << endl;
}
正如预期的那样,输出是 4。
但是,当我对多维向量尝试相同的方法时,结果并不是我认为正确的:
#include <iostream>
#include <vector>
int main(){
vector <vector<int>> v = {{1, 2}, {3, 4}, {5}}; // 5 elements in total
cout << v.size() << endl;
cout << sizeof(v)/sizeof(int) << endl;
}
这一次,输出是 3 而不是预期的 5。谁能解释为什么会发生这种情况,以及如何修改代码以产生正确的输出?
【问题讨论】:
-
sizeof的向量实际上并没有像你想象的那样做。有趣的事实:您的sizeof(v)将总是为您提供相同的值,无论它是完全空的还是包含的ints 比这个宇宙中的原子多。 -
正如预期的那样,输出是 4 -- No, not here。如您所见,
sizeof行的输出为 6。