あなたが本当に欲しいのはstd::unordered_map<std::string, std::tuple<std::string, std::string, std::string>>
. std::vector
これにより、 s が同じ長さでなければならないという不変条件を維持する必要がなくなります。また、他の文字列の一定時間のルックアップも提供します。例えば、
typedef std::tuple<std::string, std::string, std::string> value_type;
std::unordered_map<std::string, value_type> map;
// Populate the map
map["foo"] = std::make_tuple("first", "second", "third");
// ...
std::get<0>(map["foo"]); // Get the first string that "foo" maps to
std::vector
4 つの sを使用して設計を変更したくない場合は、 std::find
andを使用して最初std::distance
の のインデックスを見つけ、次にそのインデックスを他のものに使用する必要があります。"foo"
std::vector
auto key_it = std::find(std::begin(vec1), std::end(vec1), "foo");
int index = std::distance(std::begin(vec1), key_it);
std::string s2 = vec2[index];
std::string s3 = vec3[index];
std::string s4 = vec4[index];