C ++将整数映射到布尔数组

时间:2013-09-14 02:36:39

标签: c++

我一直在尝试创建一个从整数到bool数组的映射。但是,以下代码似乎不起作用。

map<int, bool[]> myMap;
bool one[] = {true, true, false};
myMap[1] = one;

我没有那么多使用数组,这里似乎有一些严重的错误。有人能说出来吗? 提前谢谢。

2 个答案:

答案 0 :(得分:5)

map中存储这样的数组是行不通的,即使你可以在语法上做到这一点:即使在真正的数组超出范围之后,数组也将保留在地图中。存储bool的向量应该起作用:

map<int, vector<bool> > myMap;
vector<bool> one {true, true, false}; // C++11 syntax
myMap[1] = one;
cout << myMap[1][0] << endl;
cout << myMap[1][1] << endl;
cout << myMap[1][2] << endl;

这是demo on ideone

答案 1 :(得分:1)

使用C ++ 0x,您可以这样写:

#include <iostream>
#include <map>
#include <array>

int main() {
    std::map<int, std::array<bool, 3>> maparr {
        {1, {true, false, true}}, 
        {2, {false, false, true}}};

    for(auto& item: maparr) {
        for (auto& val : item.second) {
            std::cout << val << ' ';
        }
        std::cout << std::endl;
    }
    return 0;
}

输出:

  

1 0 1

     

0 0 1

从C ++ 0x开始,我们得到一个固定大小array。它可能正是你要找的。