std::remove_if 介紹
remove_if 可以這樣理解
前兩個引數:
給他一個迭代的起始位置和這個起始位置所對應的停止位置。 例如下方函式中的 str.begin(), str.end()
最後一個引數:
傳入一個回撥函式,如果 回撥函式函式返回真,則將當前所指向的引數,移到尾部(不穩定的資料移動)例如 下方的 Lambda 表示式 如果 n == find_str 這條命題為真則執行操作。
返回值:
被移動區域的首個元素 iterator
這個函式不負責刪除工作。所以他一般與 erase 成對出現
// list::front
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main ()
{
std::vector<std::string> str = { "Name", "1", "2", "3 ", "4", "5", "6", "7", "Name"};
for(auto& name : str) {
std::cout << name << std::endl;
}
auto find_str = "Name";
std::cout << "============================" << std::endl;
#if 0
auto sd = std::remove_if(str.begin(), str.end(), [find_str](std::string n) { return n == find_str; });
str.erase(sd, str.end());
#else
str.erase(std::remove_if(str.begin(), str.end(),
[find_str](std::string n) { return n == find_str; }),
str.end());
#endif
std::for_each(str.begin(), str.end(), [](std::string name) {std::cout << name << std::endl;});
return 0;
}
相關文章
- c++11:std::boolalpha、std::noboolalphaC++
- std::vector 和 std::list 區別
- 介紹
- std::reserve和std::resize的區別
- `std::packaged_task`、`std::thread` 和 `std::async` 的區別與聯絡Packagethread
- LAMP架構介紹、MYSQL介紹、安裝LAMP架構MySql
- php介紹PHP
- CSRedisCore 介紹Redis
- BitMap介紹
- GeoServer介紹Server
- RabbitMQ 介紹MQ
- 模式介紹模式
- Pyzmq介紹MQ
- Java介紹Java
- css介紹CSS
- kafka介紹Kafka
- 【RESTEasy 介紹】REST
- Kafka 介紹Kafka
- PostgreSQLHooK介紹SQLHook
- nginx介紹Nginx
- 埠介紹
- MongoDB介紹MongoDB
- docker 介紹Docker
- TypeScript介紹TypeScript
- Smbclient介紹client
- JVM 介紹JVM
- Spark介紹Spark
- MQT介紹MQQT
- HttpClient介紹HTTPclient
- Mongoose介紹Go
- JCache 介紹
- Yocto 介紹
- Docker介紹Docker
- GO 介紹Go
- GraphRAG介紹
- github介紹Github
- Ceph介紹
- MySql介紹MySql