要删除列表的第i个元素,我目前正在使用以下语法:
std::list<int> remaining{1,2,3,4,5};
auto it = remaining.begin();
advance(it, i);
remaining.erase(it);
是否有较简单的方法来实现这一目标?同样,对于插入,以下是我遵循的语法。还能不那么冗长吗?
it = remaining.begin();
advance(it, i);
remaining.insert(it, el);
答案 0 :(得分:5)
您可以使用std::next
。您的清除通话将会是
remaining.erase(std::next(remaining.begin(), i));
您的插入呼叫将是
remaining.insert(std::next(remaining.begin(), i), el);