C++ STL

vector

创建

vector<int> a;  
vector<int> a(10);
vector<int> a(10, 0);
vector<int> b(a); // 拷贝a中元素

操作

a.push_back(x);  //尾部插入
a.pop_back();    //尾部删除
a.clear();       //清空
a.size();        //返回大小
a.resize(x);     //改变大小
a.insert(a.begin()+i, x) // 插入元素
a.erase(a.begin()+i); // 删除元素

遍历

for(int i = 0; i < s.size(); i++)
	cout << a[i];

for(vector<int>::iterator it = a.begin(); it != a.end(); it++)
	cout << *it;


set

创建

set<int> s;
vector<int> a; set<int> s(a.begin(), a.end());

操作

s.size();
s.empty();
s.insert(x); // 插入元素
s.erase(x); // 删除元素
s.erase(it); //删除迭代器所指元素,返回下一个迭代器
s.erase(s.begin(), s.end()); 
s.clear(); //清空set
s.find(x); //返回迭代器,不存在返回s.end()
s.count(x); //判断x是否存在
s.lower_bound(x) //大于等于x第一个元素的迭代器
s.upper_bound(x) //大于x第一个元素的迭代器

遍历

for(set<int>::iterator it = s.begin(); it != s.end(); it++)
	cout << *it << endl;

multiset

允许有重复元素的set

map

创建

map<string, int> mp;

操作

mp.insert(pair<string, int>("name", x));
mp["name"] = x;
mp.find("name"); // 返回迭代器,不存在返回mp.end()
mp.count("name"); // 返回1/0
mp.erase("name");
mp.erase(mp.begin(). mp.end());

遍历

for(map<string, int>::iterator it = mp.begin(); it != mp,end(); it++)
	cout << (*it).first << (*it).second;
	
for(auto x : mp)
	cout << x.first << x.second;


unordered_map

可能比map快

杂项

离散化

for(int i = 1; i <= n; i++){
	int x; cin >> x;
	a.push_back(x);
	t.push_back(x);
}

sort(t.begin(), t.end());
t.erase(unique(t.begin(), t.end()),t.end());

for(int i = 0; i < a.size(); i++)
	a[i] = lower_bound(t.begin(), t.end(), a[i]) - t.begin()+1;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值