私は2Dベクトルをエミュレートする1D charベクトルを持っています(これは要件です)。このベクトルは000111であり、ベクトルのベクトル[0] = 000とベクトル[1] = 111に相当します。したがって、同じ長さ(この場合は3)の2つの文字列があります。私はstd::unordered_map
でキーとしてすべての文字列を設定したいので、私はやっている:私は新しい文字列を構築して、マップにそれを挿入する必要があるため新しい文字列の作成を避けるにはどうすればよいですか?
#include <iostream>
#include <unordered_map>
#include <string>
#include <vector>
int main()
{
std::unordered_map<std::string, int> mymap;
std::vector<char> keys(2 * 3); // 2 keys, each one of length 3
for(int i = 0; i < 2; ++i)
{
for(int j = 0; j < 3; ++j)
{
keys[j + i * 3] = (i) ? '1' : '0';
}
}
// keys = 000111
for(int i = 0; i < 2; ++i)
{
mymap[std::string(keys.begin() + i * 3, keys.begin() + (i + 1) * 3)] = i;
}
for (auto& x: mymap) {
std::cout << x.first << ": " << x.second << std::endl;
}
/*
Output:
111: 1
000: 0
*/
return 0;
}
私は不幸になりました。もし私がそれを何かを忘れさせることができれば、それは素晴らしいことでしょう。私はできますか?
*「建設は悪いですか?」*はい。 'char(0)!= '0'' –
私の愚か@BaummitAugen、あなたは正しいです、私は質問を更新しました、再読してください! :) – gsamaras
@gsamaras前と同じ問題です。 ;) 'keys [j + i * 3] =(i)を試してください。 '1': '0'; ' –