ファイルを読み込み/解析し、キーと値のペアをマップに格納するクラスがあります。getter /によってコピーされないでアクセスされるマップの逆の反復
typedef std::map<std::string, const int> Data;
typedef std::map<std::string, const int>::reverse_iterator DataItReverse;
は今、私は、「パーサ」クラスinline Data getData() const {return _data;}
すべて私が問題になっているマップを反復処理を逆にするまでは素晴らしいですからデータを取得するためのゲッターを持っています。反復する上記
for(DataItReverse it_reverse = _parser->getData().rbegin();
it_reverse != _parser->getData().rend();
++it_reverse)
{
std::cout << it_reverse->first << std::endl;
}
コード通常順(逆ではない)、私は一時変数にデータをコピーする場合、すべてがうまく機能して:
Data tmpData = _parser->getData();
for(...)
私は以来、データのコピーを作成することを回避したいと思いますそれは大きな地図になるでしょう。
その内部にデータを複数回に
は、あなたが作っている唯一の変更は、コピーされ、かつ秩序の逆転が何か他のものによるものではないことをことを* *絶対によろしいです。コピーが実際にオリジナルと同じデータ型であることも確かですか?そうでなければ、これはひどく奇妙に思えます。 – AaronI
リファレンス「Data&getData();」を返すのはどうですか? – cwschmidt
@AaronIはい私は確信している、私は**パディ**によって投稿された最初の答えを試してみるつもりだ、ちょうどこれを動作させる分を与える。 – Kyslik