C++ でインクリメントがどのように機能するかについて質問があります。
i++ または ++i の値について多くの主題を見てきましたが、割り当てに使用された場合はそうではありません。
[name, test] を含むandboost::container::flat_map<std::string, std::string*> param_;
があります。boost::sregex_token_iterator ii
char* で作業していた場合、次のようにします
param[*ii] = new std::string(*(ii + 1));
しかし、それは機能していないので、次のようなことをしました:
std::string tmp = *(ii++);
this->param_[tmp] = new std::string(*(ii));
そして、私は正しい出力を得ています:
name : test;
しかし、1行で実行しようとすると、正しい出力が得られません:最初に試しました:
this->param_[*(ii++)] = new std::string(*(ii));
しかし、私は得る:
id : id;
そして、間違って私は試しました:
this->param_[*(++ii)] = new std::string(*(ii));
そして私は得ます:
test : name
なぜ私は最初に「テスト」を取得するのか理解していますが、すでにインクリメントされているので2番目に「名前」を取得する理由はわかりませんii?
マップを表示するには、単純に
for (auto ii = this->param_.begin(); ii != this->param_.end();++ii)
std::cout << ii->first << ":" << *ii->second << std::endl;