0

这是行不通的。原因对我来说很神秘。

PS:使用 C++11

http://ideone.com/elopRc

#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;
}
4

1 回答 1

0

在这里,three_d_struct_vis of type vector<vector<vector<MyStruct>>>,即 a vectorof vector<vector<MyStruct>>,因此您需要添加 type 元素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以获取整个代码。

于 2014-01-26T19:55:56.030 回答