我刚刚进入新的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;
答案 0 :(得分:2)
是的,使用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 << ")\n\n";
// 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";
}
}
输出:
pair: (9, 10) simple_map: (5, 6) (7, 8) complex_map: (1, (3, 4)(5, 6)) (2, (7, 8)(8, 8)(9, 0))
请参阅http://ideone.com/hCjtjP的在线演示。
答案 1 :(得分:0)
您可以使用统一初始化,但它仅适用于初始化,而不适用于其他地方。
std::map<int, std::map<int, int>> foo = {
{1, {{2, 3}}}
};
注意{2,3}周围的额外{}。要初始化地图,您需要一对initialization_list对。然后使用统一初始化来构造对。