【发布时间】:2012-04-13 17:53:09
【问题描述】:
我几乎从不在任何地方放 ++ 或 -- 除了单独的一行。我知道它们会导致未定义的行为,并且可能会成为调试的地狱。但出于冗长的目的,我很受诱惑。这是有效的代码吗?
map<int, int> dict;
...
int key = ...;
if (dict.lower_bound(key) != dict.begin()) {
int prevval = (--dict.lower_bound(key))->second;
...
}
我喜欢只是这样做
int prevval = (dict.lower_bound(key)-1)->second;
但双向迭代器没有定义operator-()。
谢谢!
【问题讨论】:
-
如果您不确定该操作顺序 - 使用更多括号
标签: c++ stl pre-increment