[英]3D Vector of struct emplace_back
這不起作用。 而這對我來說是個謎。
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
的類型為vector<vector<vector<MyStruct>>>
,即vector
的vector<vector<MyStruct>>
,所以需要添加型的元件vector<vector<MyStruct>>
(同樣為嵌套的尺寸) 。 但是,在您的代碼中,您將直接添加MyStruct
類型的元素。
您需要更改為以下內容:
for(size_t i = 0; i < max_i; i++) {
vector<vector<MyStruct>> v1;
for(size_t j = 0; j < max_j; j++) {
vector<MyStruct> v2;
for(size_t k = 0; k < max_k; k++) {
MyStruct a = {k, 'x', false, nullptr};
v2.emplace_back(move(a));
}
v1.emplace_back(move(v2));
}
three_d_struct_v.emplace_back(move(v1));
}
查看ideone中的完整代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.