最近遇到一个非常奇怪C++的问题:
vector<string> tmp;tmp.erase(std::remove(tmp.begin(), tmp.end(), Routers[i].name_), tmp.end());
在Windows下的VS中编译没有任何问题。
但是在Linux 下的 g++下面报错:
解决方法,包含头文件:
#include <algorithm>
原因:
定义于头文件 <algorithm>
算法库提供大量用途的函数(例如查找、排序、计数、操作),它们在元素范围上操作。注意范围定义为 [first, last) ,其中 last 指代要查询或修改的最后元素的后一个元素。
移除满足特定判别标准的元素
std::remove,
std::remove_if
template< class ForwardIt, class T >
ForwardIt remove( ForwardIt first, ForwardIt last, const T& value );
(1) (C++20 前)
template< class ForwardIt, class T >