• C++ STL


    set

    set 自定义排序器

    注:set触发自定义排序器是在插入时,如果想修改已在set中数据的排序元素,并希望重新排序。需要找到该元素并删除,再插入,才能触发排序

    #include <iostream>
    #include <set>
    using namespace std;
    const int maxn=50010;
    struct node {
    	int num;
    	int ts;
    	// 重载<运算符,实现set自定义排序
    	bool operator < (const node & nd) const {
    		return nd.ts!=ts?ts>nd.ts:num<nd.num;
    	}
    };
    set<node> rcs; // 记录容器--记录排序后的查询结果 
    int book[maxn];// 记录重复次数--book[i]=t,第i个元素已重复出现t次 
    int main(int argc,char * argv[]) {
    	int n,k,a;
    	scanf("%d %d",&n,&k);
    	for(int i=0; i<n; i++) {
    		scanf("%d",&a);
    		if(i!=0) { //第一个查询不打印,之后的查询,打印结果 
    			printf("%d:",a);
    			int cnt = 0;
    			for(auto it=rcs.begin(); cnt<k&&it!=rcs.end(); it++,cnt++)
    				printf(" %d",it->num);
    			printf("
    ");
    		}
    		auto it = rcs.find({a,book[a]}); //是否以前已经出现过 
    		if(it!=rcs.end()) rcs.erase(it); //删除再插入,触发set自定义排序 
    		rcs.insert({a,++book[a]});
    	}
    	return 0;
    }
    

    set遍历

    #include <iostream>
    #include<set>
    using namespace std;
    int main(){
        int numList[6]={1,2,2,3,3,3};
        //1.set add
        set<int> numSet;
        for(int i=0;i<6;i++)
        {
            //2.1insert into set
            numSet.insert(numList[i]);
        }
        //2.travese set
        for(set<int>::iterator it=numSet.begin() ;it!=numSet.end();it++)
        {
            cout<<*it<<" occurs "<<endl;
        }
        //3.set find useage
    
        int findNum=1;
        if(numSet.find(findNum)!=numSet.end())
        {
            cout<<"find num "<<findNum<<" in set"<<endl;
        }else{
            cout<<"do not find num in set"<<findNum<<endl;
        }
        //set delete useage
        int eraseReturn=numSet.erase(1);
        if(1==eraseReturn)
        {
              cout<<"erase num 1 success"<<endl;
        }else{
            cout<<"erase failed,erase num not in set"<<endl;
        }
        return 0;
    }
    

    map

    map遍历

    #include <iostream>
    #include <map>
    using namespace std;
    
    int main(){
        map<int,int> m;
        for (int i = 0; i < 10; i++){
            m[i] = i*i;
        }
        map<int,int>::iterator iter;
        iter = m.begin();
        while(iter != m.end()){
            cout << iter->first << "-" << iter->second << endl;
            iter++;
        }
        for (iter = m.begin();iter != m.end(); iter++){
            cout << iter->first << "-" << iter->second << endl;
        }
        for(auto &it : m){
            cout << it.first << "-" << it.second <<endl;
        }
        return 0;
    }
    

    queue

    注意事项

    哨兵

    queue<string> q;
    q.push("");
    cout<<q.size(); //1
    
  • 相关阅读:
    CMD命令
    存储过程-使用(二)
    存储过程-基本(一)
    事务学习-概念(一)
    组装简历必备的9大要件
    Java 正则表达式详解_正则表达式
    各类程序员学习路线图
    mrql初级教程-使用(er)
    PHP获取当期前运行文件的路径,名字,服务器路径
    mysqldump导入导出mysql数据库
  • 原文地址:https://www.cnblogs.com/houzm/p/12860348.html
Copyright © 2020-2023  润新知