C++:迭代器/Vector容器/队列Queue/Map映射/Set-自用记录

Vector容器

Vector容器使用-示范代码:

#include<bits/stdc++.h>
using namespace std;

vector<string> city;//定义一个int类型的vector容器city 
vector<string> dig[1000];//定义一个int类型的vector容器dig组 

int Myfind(string s){
	for(int i=0;i<city.size();i++){	//当成数组用 -迭代 
		if(city[i]==s)
			return i;//返回id 
	}
	return -1;
}
int main(){
	int n;
	cin>>n;//输入个数 
	for(int i=0;i<n;i++){
		string d,c;
		cin>>d>>c;//id 和 城市名称 
		int flag=Myfind(c);
		if(flag==-1){	//找不到,未放入过名称 
			city.push_back(c);//名称压进vector city(和list相似但不是) 
			dig[city.size()-1].push_back(d);//id压进vector dig组 
			//city.size()-1,vector元素个数 
			//同一个城市多个id,所以id放入的vector dig组 
		}
		else dig[flag].push_back(d);//找得到,放入过名称,此时再放入id即可 
	}
	for(int i=0;i<city.size();i++){		//当成数组用 -迭代 
		cout<<city[i]<<" "<<dig[i].size()<<endl;
		for(int j=0;j<dig[i].size();j++)
			cout<<dig[i][j]<<endl; 
	}
}
//测试用例 
//5
//11 gz
//22 gx
//33 hn
//44 gz
//33 hn
 

队列Queue

CLZ银行-队列例题:

#include<bits/stdc++.h>
using namespace std;

queue<string> V; //定义队列V、N 
queue<string> N;

int main(){
	int M;
	cin>>M;
	while(M--){
		string op,name,type;//入或者出,名字,权限类型 
		cin>>op;
		if(op=="IN"){
			cin>>name>>type;
			if(type=="V")
				V.push(name);
			else
				N.push(name); 
		}
		else{
			cin>>type;
			if(type=="V")
				V.pop();
			else 
				N.pop();
		}
	}
	while(V.size()){	//遍历就是输出第一个然后pop扔掉,然后再下个第一个 
		cout<<V.front()<<endl;
		V.pop();
	}
	while(N.size()){
		cout<<N.front()<<endl;
		N.pop();
	}
	return 0;
}

Map映射

弗里的语言-Map映射例题:

#include<bits/stdc++.h>
using namespace std;

map<string,bool> mp;
int main(){
	int n;
	string ans="No";
	cin>>n;
	for(int i=0;i<n;i++){
		string word;
		cin>>word;
		if(mp.count(word)){	
		//map不包含重复的key,mp.count(key)取值为0或者1,表示是否包含 
			ans=word;
			break;
		}
		else mp[word]=1;
	}
	cout<<ans<<endl; 
	return 0;
} 

Set使用

set使用-示范代码:

#include<bits/stdc++.h>
using namespace std;

int n;//共计N个数
int m;//选m个数

//1.set的定义 set<数据类型> 变量名
set<int> intSet;
set<string> stringSet;

int main(){
	string s1="测试1";
	string s2="测试2";
	string s3="测试3";
	
	//2.插入操作
	stringSet.insert(s3);
	stringSet.insert(s1);
	
	//5.返回集合元素数量 
	printf("q前2次插入操作完成后的元素数量为%d\n",stringSet.size());
	stringSet.insert(s2); 
	printf("q前3次插入操作完成后的元素数量为%d\n",stringSet.size());
	
	//6.遍历整个集合,借助迭代器实现
	//定义方式 容器类型<type> ::iterator name
	set<string> ::iterator setStringIterator;
	for(setStringIterator=stringSet.begin();setStringIterator!=stringSet.end();setStringIterator++)
		cout<<*setStringIterator<<" ";
	puts("");
	
	//4.判断是否由此元素
	if(stringSet.count(s2)!=0)	
		cout<<"存在元素"<<s2<<endl; 
	return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值