容器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;}



后记: 例子比较简单,仅供观赏之用。

原创粉丝点击