首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

地图中可以存放一个数组么?

2013-03-27 
map中可以存放一个数组么???有一个数组:int array[5] {0,1,2,3,4}如何把这个数组放到一个map中伪代码即

map中可以存放一个数组么???
有一个数组:int array[5] = {0,1,2,3,4};
如何把这个数组放到一个map中
伪代码即:map<int, 数组> mapArray;
然后再把array这个数组放到mapArray中,key为0
最后遍历出array里面的值
[解决办法]
除了vector和8楼说的自己定制
你也可以选用std::array

c++11


std::map<int, std::array<int, 5> > arrays;


c++03

std::map<int, boost::array<int, 5> > arrays;

[解决办法]
补充LS的吧,array<T, N>模板的初始化语法建议是:

array<int, 5> arr = {{1, 2, 3, 4, 5}};

g++编译的话,可能需要打开-std=c++11或者-std=c++0x选项,vs2010及以上默认支持,08没有试过,不敢乱说。如果大括号只使用一层的话,g++ 4.7.2是编译不过的。
因为array模板的实现就是一个struct内面一个定长数组,但因为这个是标准库的,所以便于别人理解代码。加上array提供的STL接口,也是很好用的。

array<int, 5> a = {{1, 2, 3, 4, 5}};
typedef map<int, array<int, 5> > map_type;
map_type m;
m.insert(map_type::value_type(10, a));
map_type::const_iterator it = m.find(10);
if (it != m.end())
{
    const array<int, 5>& ref = it->second;
    typedef array<int, 5>::const_iterator iterator;
    for (iterator it2 = ref.begin(); it2 != ref.end(); ++it2)
    {
        std::cout << *it2 << std::endl;
    }
}

热点排行