zoukankan      html  css  js  c++  java
  • c++ STL常用算法使用方法

    #include <string>
    #include <vector>
    #include <functional>
    #include <iostream>
    using namespace std;
    
    void print(vector<int>& list, const string &des)
    {
    	cout<<"after "<<des.c_str()<<", the list is: "<<endl;
    	for(vector<int>::iterator iter = list.begin(); iter != list.end(); ++iter)
    	{
    		cout<<(*iter)<<" ";
    	}
    	cout<<endl;
    }
    
    void printstr(vector<string>& list, const string &des)
    {
    	cout<<"after "<<des.c_str()<<", the list is: "<<endl;
    	for(vector<string>::iterator iter = list.begin(); iter != list.end(); ++iter)
    	{
    		cout<<(*iter)<<" ";
    	}
    	cout<<endl;
    }
    
    template<class T>
    struct comp:public std::binary_function<T,T,bool>
    {
    	bool operator()(const T &t1, const T &t2) const
    	{
    		return t1 > t2;
    	}
    };
    
    struct conv : public std::unary_function<string, string>
    {
    	string& operator()(string &str)
    	{
    		std::transform(str.begin(), str.end(), str.begin(), ::tolower);
    		return str;
    	}
    };
    
    int main()
    {
    	vector<int> list;
    	list.push_back(2324);
    	list.push_back(45);
    	list.push_back(576);
    	list.push_back(768);
    	list.push_back(21);
    	list.push_back(4);
    	list.push_back(1);
    	list.push_back(54758);
    	list.push_back(123);
    	list.push_back(464);
    	list.push_back(88);
    	print(list, "push back");
    
    	std::sort(list.begin(), list.end());
    	print(list, "normal sort");
    
    	vector<int>::iterator iter = lower_bound(list.begin(), list.end(), 5);
    	cout<<"lower find element is 5, value "<<(*iter)<<endl;
    
    	iter = upper_bound(list.begin(), list.end(), 5);
    	cout<<"upper find element is 5, value "<<(*iter)<<endl;
    	
    	bool ret = std::binary_search(list.begin(), list.end(), 464);
    	if(ret)
    	{
    		cout<<"find 464, value ok."<<endl;
    	}
    
    	std::sort(list.begin(), list.end(), comp<int>());
    	print(list, "big sort");
    
    	iter = lower_bound(list.begin(), list.end(), 5);
    	cout<<"lower find element is 5, value "<<(*iter)<<endl;
    
    	iter = upper_bound(list.begin(), list.end(), 5);
    	cout<<"upper find element is 5, value "<<(*iter)<<endl;
    
    	ret = std::binary_search(list.begin(), list.end(), 88, comp<int>());
    	if(ret)
    	{
    		cout<<"find 88, value ok."<<endl;
    	}
    
    	list.insert(std::upper_bound(list.begin(), list.end(), 55, comp<int>()), 55);
    	print(list, "upper bound insert");
    
    	list.insert(std::lower_bound(list.begin(), list.end(), 77, comp<int>()), 77);
    	print(list, "lower bound insert");
    
    	iter = std::search(list.begin(), list.end(), list.begin() + 4, list.begin() + 6);
    	if(iter != list.end())
    	{
    		cout<<"search seq pos is "<<(*iter)<<endl;
    	}
    
    	vector<string> strList;
    	strList.push_back("AAAA");
    	strList.push_back("BBBB");
    	strList.push_back("CCCC");
    	printstr(strList,"str list");
    
    	std::transform(strList.begin(), strList.end(), strList.begin(), conv());
    	printstr(strList, "transform");
    
    	// sort之后才能执行unique
    
    	return 0;
    }
    

      上面的使用主要起到抛砖引玉的作用,可根据实际情况借鉴使用方法使用其它算法。

  • 相关阅读:
    php 换行 PHP_EOL
    removeAttribute与removeAttributeNode的区别
    百度地图api 常用 例子
    nth-child()伪类选择器
    c++ 11 lambda表达式
    mysql sql时间戳格式化语句
    Apache Forbidden 403错误提示
    MySQL中查询所有数据库占用磁盘空间大小
    luaj使用 方法签名规则 Cocos2dxLuaJavaBridge
    nginx代理配置备份
  • 原文地址:https://www.cnblogs.com/foreverstars/p/4685134.html
Copyright © 2011-2022 走看看