容器vector含有谓词的排序查找和删除样例
来源:互联网 发布:备份苹果手机所有数据 编辑:程序博客网 时间:2024/06/05 07:03
题记:使用容器时,经常会使用其进行排序查找和删除,简单的sort, find, erase/remove不用多说了,关键是使用谓词时的使用比较麻烦,这里仅仅列举了个例子进行保留,以备以后可以直接拿来使用。
样例代码: COPY后编译可以直接运行(使用Visual Studio 2008 编译通过)。
#include <iostream>#include <vector>#include <algorithm>#include <functional>#include <string>struct KeyValue{std::string m_strKey;int m_nValue;KeyValue() : m_strKey(""), m_nValue(0) {}KeyValue(std::string strKey, int nValue) : m_strKey(strKey), m_nValue(nValue) {}bool EqualKey(std::string strKey){return m_strKey.find(strKey) != -1 ? true : false;}};bool CompareKeyValueGreaterValue(KeyValue val1, KeyValue val2){return val1.m_nValue > val2.m_nValue;}typedef std::vector<KeyValue> KeyValueCollection;void ShowAll(const KeyValueCollection& coll){std::cout << " --- begin --- " << std::endl;for ( KeyValueCollection::const_iterator it = coll.begin(); it != coll.end(); ++it ){std::cout << "Key : " << it->m_strKey << ", Value : " << it->m_nValue << std::endl;}std::cout << " --- end --- " << std::endl;}int main(){KeyValueCollection myColl;myColl.push_back(KeyValue("Jim", 558));myColl.push_back(KeyValue("Tim", 665));myColl.push_back(KeyValue("John", 594));myColl.push_back(KeyValue("Lance", 625));myColl.push_back(KeyValue("Thoms", 563));myColl.push_back(KeyValue("KaKa", 668));myColl.push_back(KeyValue("Messi", 680));ShowAll(myColl);//// Sort //std::sort(myColl.begin(), myColl.end(), CompareKeyValueGreaterValue);ShowAll(myColl);//// find_if //if ( std::find_if(myColl.begin(), myColl.end(), std::bind2nd(std::mem_fun_ref(&KeyValue::EqualKey), std::string("John"))) != myColl.end() ){std::cout << "Have found the value." << std::endl;}else{std::cout << "Not found the value." << std::endl;}//// remove_if// remove_if should erase the element from the return iterator to end.//KeyValueCollection::iterator pos = std::remove_if(myColl.begin(), myColl.end(), std::bind2nd(std::mem_fun_ref(&KeyValue::EqualKey), "im"));myColl.erase(pos, myColl.end());ShowAll(myColl);#ifdef _DEBUGgetchar();#endifreturn 0;}
后记: 例子比较简单,仅供观赏之用。
- 容器vector含有谓词的排序查找和删除样例
- Sting和vector的查找和删除
- vector向量容器元素排序与查找
- STL vector find and sort vector的查找和排序
- vector删除元素和查找
- vector向量容器的删除
- ActiveAndroid-含有容器的插入删除
- C++容器vector和map的正确删除方法
- C++容器vector和map的正确删除方法
- STL中vector和map的查找和删除
- 实现Vector容器的增加、删除、排序(算法函数排序)、遍历、复制操作
- vector容器添加和删除元素
- vector容器添加和删除元素
- vector容器添加和删除元素
- vector容器添加和删除元素
- std::vector删除重复元素和查找
- std::vector删除重复元素和查找
- std::vector删除重复元素和查找
- 对plist文件的读写操作
- KEIL C变量定义占用空间
- apache + tomcat 单IP多域名多应用配置(2)
- 使用平板电脑真实设备调试Qt-Creator写的程序
- free 查看内存
- 容器vector含有谓词的排序查找和删除样例
- sql 2000 作业调度(定时执行存储过程)
- C++编译器与链接器工作原理
- synchronized的用法简介
- 1
- 用ADIL设计 Remote interface
- junit
- poj 1170 Shopping Offers
- windows下Domino拷贝迁移