C++ string及vector处理汇总
std::remove_if 介绍
remove_if 可以这样理解
前两个参数: 给他一个迭代的起始位置和这个起始位置所对应的停止位置。 例如下方函数中的 str.begin(), str.end()
最后一个参数:传入一个回调函数,如果 回调函数函数返回真,则将当前所指向的参数,移到尾部(不稳定的数据移动)例如 下方的 Lambda 表达式 如果 n == find_str 这条命题为真则执行操作。
返回值:被移动区域的首个元素 iterator
这个函数不负责删除工作。所以他一般与 erase 成对出现
1 // list::front 2 #include <iostream> 3 #include <vector> 4 #include <string> 5 #include <algorithm> 6 7 int main () 8 { 9 std::vector<std::string> str = { "Name", "1", "2", "3 ", "4", "5", "6", "7", "Name"}; 10 for(auto& name : str) { 11 std::cout << name << std::endl; 12 } 13 auto find_str = "Name"; 14 std::cout << "============================" << std::endl; 15 #if 0 16 auto sd = std::remove_if(str.begin(), str.end(), [find_str](std::string n) { return n == find_str; }); 17 str.erase(sd, str.end()); 18 #else 19 str.erase(std::remove_if(str.begin(), str.end(), 20 [find_str](std::string n) { return n == find_str; }), 21 str.end()); 22 #endif 23 std::for_each(str.begin(), str.end(), [](std::string name) {std::cout << name << std::endl;}); 24 25 return 0; 26 }
没有坚守就没有事业,没有执着就没有未来!
浙公网安备 33010602011771号