我了解到检查一维向量的大小是一项简单的任务,因为你可以只写
#include <iostream>
#include <vector>
int main(){
vector <int> v = {1, 2, 3, 4};
cout << v.size() << endl;
cout << sizeof(v)/sizeof(int) << endl;
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,输出为 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;
}
Run Code Online (Sandbox Code Playgroud)
这次,输出是 3 而不是预期的 5。有人可以解释为什么会发生这种情况,以及如何修改代码以产生正确的输出?
在您的第二个示例中,v是vector<int>s的向量,因此v.size()报告 3个子向量而不是整数数。
std::vector::size() 不会递归,你必须自己做:
std::size_t sum = 0;
for (auto &&i : v) {
sum += i.size();
}
// return sum;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |