【发布时间】:2014-01-26 19:50:37
【问题描述】:
这行不通。原因对我来说很神秘。
PS:使用 C++11
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
struct MyStruct {
size_t some_num;
char some_char;
bool some_bool;
MyStruct* some_ptr;
};
vector<vector<vector<MyStruct>>> three_d_struct_v;
size_t max_i = 100;
size_t max_j = 10;
size_t max_k = 10;
for(size_t i = 0; i < max_i; i++) {
for(size_t j = 0; j < max_j; j++) {
for(size_t k = 0; k < max_k; k++) {
three_d_struct_v.emplace_back(k, 'x', false, nullptr);
}
}
}
return 0;
}
【问题讨论】:
-
three_d_struct_v不是MyStructs 的向量,它是向量的向量。 -
老实说,我会使用矢量地图的地图并称之为好。 See it live。甚至是地图的地图,但疯狂必须在某个地方结束。
-
@WhozCraig 您的 ideone 运行时间为 2000 万次:3.59 内存:555008(内存不足)其中接受的答案时间:2.87 内存:3468
-
@BHare 2000 万什么,到底是什么?我对此没有任何问题,ideone.com 也没有,所以我不知道您添加了哪些附加要求。使用最有效的方法,但在 555008 和 oom 上,我认为您的实现不太可能是正确的。我使用了
unordered_map,因为排序有点毫无意义。 -
我将 i 设置为 800,000,将 j 和 k 设置为 5. 20,000,000 百万个元素。
标签: c++ c++11 vector multidimensional-array emplace