我对 C++ 中的增量如何工作有一些疑问;
我见过很多关于 i++ 或 ++i 值的主题,但在用于赋值时却没有。
我有一个boost::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;
但是当我尝试在一条线上进行时,我没有得到正确的输出:首先我尝试过:
this->param_[*(ii++)] = new std::string(*(ii));
但我得到:
id : id;
然后我错误地尝试了:
this->param_[*(++ii)] = new std::string(*(ii));
我明白了:
test : name
我明白为什么我首先得到“测试”,但不明白为什么我第二个得到“名字”,因为我已经增加了 ii?
要显示地图,我只需执行
for (auto ii = this->param_.begin(); ii != this->param_.end();++ii)
std::cout << ii->first << ":" << *ii->second << std::endl;