我一直在尝试创建一个从整数到布尔数组的映射。但是,以下代码似乎不起作用。
map<int, bool[]> myMap;
bool one[] = {true, true, false};
myMap[1] = one;
我没有那么多使用数组,这里似乎有一些严重的错误。有人可以指出吗?提前致谢。
我一直在尝试创建一个从整数到布尔数组的映射。但是,以下代码似乎不起作用。
map<int, bool[]> myMap;
bool one[] = {true, true, false};
myMap[1] = one;
我没有那么多使用数组,这里似乎有一些严重的错误。有人可以指出吗?提前致谢。
将这样的数组存储在 amap
中是行不通的,即使您可以在语法上做到这一点:即使在真正的数组超出范围之后,数组也会保留在映射中。相反,存储向量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;
使用 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 开始,我们得到一个固定大小的数组。它可能就是您要找的。