According to cplusplus.com,std::set::insert()
重载,它带有一个提示迭代器,其中插入项的位置从C ++ 98更改为C ++ 11。在C ++ 98中,提示应为:
如果position指向插入元素前面的元素,该函数会优化插入时间。
但是,在C ++ 11中,提示已更改,现在应该是:
如果position指向将跟随插入元素的元素(或者结尾,如果它是最后一个元素),该函数会优化其插入时间。
但是,在C ++ 98或C ++ 11中,返回值都是相同的:
一个迭代器,指向新插入的元素或指向集合中已具有相同值的元素。
对于C ++ 98,我有代码插入一系列相邻的项目,如下所示:
void example98(std::set &_sent, int beginOffset, int lastOffset) {
std::set<int>::iterator itr = _sent.end();
for (int offset = beginOffset; offset <= lastOffset; ++offset) {
itr = _sent.insert(itr, offset);
}
}
我可以在C ++ 11中将其更改为:
void example11(std::set &_sent, int beginOffset, int lastOffset) {
std::set<int>::iterator itr = _sent.end();
for (int offset = lastOffset; offset >= beginOffset; --offset) {
itr = _sent.insert(itr, offset);
}
}
但是由于需要重构从C ++ 98到C ++ 11的代码,我感到困扰,我在这里做错了,或者如果不是,这个改变的动机是什么,为什么这个论点insert()
更改了但没有返回值?