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 }

 

posted @ 2019-12-08 10:56  傍风无意  阅读(314)  评论(0)    收藏  举报