いくつかの値の C スタイルの配列がありました。メモリ節約のためのマップにする必要がありました(一度にすべてを割り当てて保持するのではなく、必要に応じて割り当てます)...セットにするか、さらに最適化してベクトルにすることができます。しかし、私は 1 つの痛ましい問題に遭遇しました:val * v; auto val_index = v - val_collection
アイテム ID を与えるために使用されていました... 現在、そのようなコードはコンパイルされません。それは std::vector の場合ですか?
質問する
108 次
1 に答える
2
std::distance
コンテナ(または他のシーケンス)の先頭からの距離を与えることができます:
std::vector<val>::iterator v = whatever();
size_t val_index = std::distance(val_collection.begin(), v);
ランダム アクセス コンテナー ( を含むvector
が、 を含まないmap
) の場合、必要に応じて次を使用することもでき-
ます。
size_t val_index = v - val_collection.begin();
于 2013-03-25T15:14:05.190 に答える