如何声明std map常量,即。,
int a[10] = { 1, 2, 3 ,4 };
std::map <int, int> MapType[5] = { };
int main()
{
}
在about片段中,可以将值1,2,3,4赋给整数数组 a ,类似地如何声明一些常量 MapType 值而不是添加main()函数内的值。
答案 0 :(得分:6)
在C ++ 0x中,它将是:
map<int, int> m = {{1,2}, {3,4}};
答案 1 :(得分:5)
更新:从C ++ 11开始,你可以......
std::map<int, int> my_map{ {1, 5}, {2, 15}, {-3, 17} };
...或类似的,其中每对值 - 例如{1, 5}
- 对密钥进行编码 - 1
- 以及映射到的值 - 5
。同样适用于unordered_map
(哈希表版本)。
仅使用C ++ 03标准例程,请考虑:
#include <iostream>
#include <map>
typedef std::map<int, std::string> Map;
const Map::value_type x[] = { std::make_pair(3, "three"),
std::make_pair(6, "six"),
std::make_pair(-2, "minus two"),
std::make_pair(4, "four") };
const Map m(x, x + sizeof x / sizeof x[0]);
int main()
{
// print it out to show it works...
for (Map::const_iterator i = m.begin();
i != m.end(); ++i)
std::cout << i->first << " -> " << i->second << '\n';
}
答案 2 :(得分:1)
我被这个问题的Boost.Assign解决方案所吸引,我写了一篇关于它的博客文章大约一年半之前(就在我放弃博客之前):
该帖子的相关代码是:
#include <boost/assign/list_of.hpp>
#include <map>
static std::map<int, int> amap = boost::assign::map_list_of
(0, 1)
(1, 1)
(2, 2)
(3, 3)
(4, 5)
(5, 8);
int f(int x)
{
return amap[x];
}