c++ 0x 3d map初始化类似于php的关联数组

C++0x 3d map initializing like in php associative arrays

本文关键字:php 关联 数组 类似于 初始化 0x 3d map c++      更新时间:2023-10-16

我刚刚进入新的c++0x的东西,并实例化一个像这样的映射:

std::map<int, std::map<int, int>> foo;
foo[1][2] = 3;

是很容易实现的。但我能在php中做一些事情吗?

$array = array(
    1 => array(
        2 => array(
            3
        )
    )
);

我不熟悉语法。也许像这样

foo[][][] = {
    1 {
        2 {3}
    }
};

所以我不需要一直写索引:

foo[1][2] = 3;
foo[1][3] = 4;
foo[1][4] = 5;

是,使用c++11特性统一初始化:

#include <iostream>
#include <map>
int main()
{
    // The value_type of a map is pair<const Key, T>.
    // To initialize a map an initializer list
    // of pair<Key, T> objects must be specified.
    // To initialize a pair:
    //
    std::pair<int, int> p{9, 10};
    std::cout << "pair:n  (" << p.first << ", " << p.second << ")nn";
    // To initialize a simple map (no nesting)
    // with value_type of pair<int, int>:
    //
    std::map<int, int> simple_map
    {  // K  V
        { 5, 6 },
        { 7, 8 }
    };
    std::cout << "simple_map:n";
    for (auto const& i: simple_map)
    {
        std::cout << "  (" << i.first << ", " << i.second << ")n";
    }
    std::cout << "n";
    // To initialize a complex map (with nesting)
    // with value_type of pair<const int, map<int, int>>
    //
    const std::map<int, std::map<int, int>> complex_map
    {  // K       V
       //       k  v
        { 1, { {3, 4},
               {5, 6} }
        },
        { 2, { {7, 8},
               {8, 8},
               {9, 0} }
        }
    };
    std::cout << "complex_map:n";
    for (auto const& mi: complex_map)
    {
        std::cout << "  (" << mi.first << ", ";
        for (auto const& p: mi.second)
        {
            std::cout << '(' << p.first << ", " << p.second << ')';
        }
        std::cout << ")n";
    }
}
输出:

<>之前对:(9、10)simple_map:(5、6)(7、8)complex_map:(1, (3,4)(5,6))(2, (7,8)(8,8)(9,0))之前

你可以使用统一初始化,但它只适用于初始化,不适用于其他地方。

std::map<int, std::map<int, int>> foo = {
    {1, {{2, 3}}}
};

注意{2,3}周围额外的{}。要初始化映射,需要initialization_list中的pair。然后使用统一的初始化构造pair。