map、set、vector基本操作函数

2 篇文章 0 订阅
1 篇文章 0 订阅

map:

  begin()         返回指向map头部的迭代器
  clear()        删除所有元素
  count()       返回指定元素出现的次数, (帮助评论区理解: 因为key值不会重复,所以只能是1 or 0empty()         如果map为空则返回true
  end()           返回指向map末尾的迭代器
  equal_range()   返回特殊条目的迭代器对
  erase()         删除一个元素
  find()          查找一个元素
  get_allocator()  返回map的配置器
  insert()        插入元素
  key_comp()      返回比较元素key的函数
  lower_bound()   返回键值>=给定元素的第一个位置
  max_size()      返回可以容纳的最大元素个数
  rbegin()        返回一个指向map尾部的逆向迭代器
  rend()          返回一个指向map头部的逆向迭代器
  size()          返回map中元素的个数
  swap()           交换两个map
  upper_bound()    返回键值>给定元素的第一个位置
  value_comp()     返回比较元素value的函数

set

begin();            // 返回指向第一个元素的迭代器
end();              // 返回指向迭代器的最末尾处(即最后一个元素的下一个位置)
clear();            // 清除所有元素
count();            // 返回某个值元素的个数
empty();            // 如果集合为空,返回true
equal_range();      //返回集合中与给定值相等的上下限的两个迭代器
erase();             //删除集合中的元素
find();             //返回一个指向被查找到元素的迭代器
get_allocator();     //返回集合的分配器
insert();           //在集合中插入元素
lower_bound();      //返回指向大于(或等于)某值的第一个元素的迭代器
key_comp();        //返回一个用于元素间值比较的函数
max_size();       //返回集合能容纳的元素的最大限值
rbegin();          //返回指向集合中最后一个元素的反向迭代器
rend();           //返回指向集合中第一个元素的反向迭代器
size();            //集合中元素的数目
swap();            //交换两个集合变量
upper_bound();     //返回大于某个值元素的迭代器
value_comp();       //返回一个用于比较元素间的值的函数

vector

 vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
 vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
 vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
 vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
 
 int b[7]={1,2,3,4,5,9,8};
 vector<int> a(b,b+7); //从数组中获得初值
 
 a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a
 a.assign(4,2); //是a只含4个元素,且每个元素为2
 a.back(); //返回a的最后一个元素
 a.front(); //返回a的第一个元素
 a[i]; //返回a的第i个元素,当且仅当a[i]存在2013-12-07
 a.clear(); //清空a中的元素
 a.empty(); //判断a是否为空,空则返回ture,不空则返回false
 a.pop_back(); //删除a向量的最后一个元素
 a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+         3(不包括它)
 a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
 a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4
 a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5
 a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8         ,插入元素后为1,4,5,9,2,3,4,5,9,8
 a.size(); //返回a中元素的个数;
 a.capacity(); //返回a在内存中总共可以容纳的元素个数
 a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
 a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
 a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才         显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降低性能) 
 a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换
 a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<

使用map的代码(pat乙级1003)

#include<bits/stdc++.h>
using namespace std;
map<char,int>mp;
int main()
{

	string s;
	int n;
	cin>>n;
	int l=0,r=0;
	while(n--)
	{
		mp.clear();
		cin>>s;
		for(int i=0;i<s.size();i++)
		{
			mp[s[i]]++;
			if(s[i]=='P')
			l=i;
			if(s[i]=='T')
			r=i;
		}
		if(mp['P']==1&&mp['T']==1&&mp['A']>=1&&mp.size()==3&&(r-l-1)>=1&&l*(r-l-1)==(s.size()-r-1))
		cout<<"YES"<<endl;
		else
		cout<<"NO"<<endl; 
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Null_zyd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值