Nicolai Josuttis 的“C++ 标准库”
第 9 章:STL 迭代器状态:
以下可能无法在某些平台上编译:
std::vector <int> coll;
//sort, starting with second element
//- NONPORTABLE version
if (coll.size() > 1){
std::sort(++coll.begin(),col.end());
}
根据平台,++col.begin() 的编译可能会失败。但是,例如,如果您使用双端队列而不是向量,则编译始终会成功。... ... C++11 提供了实用函数 next() 和 prev() 以考虑代码可移植性。
有人可以解释一下这种行为吗?
对于 MINGW gcc 4.6.1,Windows 操作系统,我得到了正确的输出:
std::vector<int> coll ;
for (int i=15; i>=1; i--)
coll.push_back(i);
sort(++coll.begin(),coll.end());