整数からブール値の配列へのマップを作成しようとしています。ただし、次のコードは機能しないようです。
map<int, bool[]> myMap;
bool one[] = {true, true, false};
myMap[1] = one;
私は配列をあまり使用していませんが、ここには深刻な問題があるようです。誰かがそれを指摘できますか?前もって感謝します。
整数からブール値の配列へのマップを作成しようとしています。ただし、次のコードは機能しないようです。
map<int, bool[]> myMap;
bool one[] = {true, true, false};
myMap[1] = one;
私は配列をあまり使用していませんが、ここには深刻な問題があるようです。誰かがそれを指摘できますか?前もって感謝します。
このような配列を a に格納する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;
これはideoneのデモです。
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 以降、固定サイズの配列を取得します。これは、探しているものである可能性があります。