如何为3D矢量声明多个值?

时间:2013-01-24 15:19:17

标签: c++ arrays vector declaration

我有typedef typedef std::vector<std::vector<std::vector<double>>> three_d_vector;来声明3D矢量;但我想知道,如果可以的话,我是如何在批量列表中声明各个值,如数组。

3 个答案:

答案 0 :(得分:2)

您需要在C ++ 11模式下编译(例如,对gcc使用命令行开关-std=c++11)并使用如下语法:

three_d_vector vec = { { {1., 2.}, {3.,  4., 17., 25.} },
                       { {5., 6., 12.}, {7.,  8.}, {0., 22.} },
                       { {9., 10.}, {11.}, {45.}, {33.}, {37., 11.} };

答案 1 :(得分:2)

假设您正在使用C ++ 11,那么您要求的是初始化矢量的直接方法:

#include <vector>

using namespace std;

int main()
{
    typedef vector<vector<vector<double>>> three_d_vector;

    three_d_vector v =
    {
        {
            { 1, 2, 3 }, { 4, 5, 6 }
        },
        {
            { 0, 0, 1 }, { 1, 0, 0 }
        },
        {
            { 4, 0, 1 }, { 1, 0, 5 }
        },
    };
}

但请注意,以这种方式定义3D矢量将使您可以自由地为每个维度设置不同的矢量大小。换句话说,这将是合法的:

    three_d_vector v =
    {
        {
            { 1, 2, 3, 7 }, { 4, 5, 6 }
        },
        {
            { 0, 0, 1 }, { 1, 0, 0, 8, 9, 15 }
        },
        {
            { 4, 0, 1 }, { 1, 0 }
        },
    };

是否需要,可接受或不可接受取决于您的使用情况;无论如何,我想你可能想看看Boost.MultiArray

答案 2 :(得分:0)

使用std::vector<std::vector<std::vector<double>>>将不会非常缓存一致。请改用Boost.MultiArray