C++ 容器

string

1. 构造

string s1();							// 1
string s2("hello");						// hello
string s3(3, 'k');						// kkk
string s4("hellohello", 2, 4);			// lloh

2. 赋值

string s1 = "hellohello";				// hellohello
string s2.assign(s1);					// hellohello
string s3.assign(s1, 2, 4);				// lloh
string s4.assign("hellohello", 2, 4);	// lloh

3. 长度

string s1 = "hellohello";
int len = s1.size();					// 10

4. 拼接

string s1("hello"), s2("world");		
string s3 = s1 + s2;					// helloworld
string s4 = s1.append(s2);				// helloworld (此时 s1 已经改变)
string s5 = s1.append("world", 2, 2);	// helloworldrl

5. 比较

string s1("hello"), s2("world");
int res1 = (s1 < s2);					// 1
int res2 = (s1 != s2);					// 0
int res3 = s1.compare(s2);				// -15 即 ('h' - 'w')
int res3 = s1.compare(3, 1, s2, 4, 2);	// 8 即 ('l' - 'd')

6. 子串

string s1 = "helloworld";
string s2 = s1.substr(2, 4);			// llow
string s3 = s1.substr(2);				// lloworld

7. 交换

string s1("hello"), s2("world");		// hello world
s1.swap(s2);							// world hello

8. 查找

string s1 = "helloworld";
int n;
if ((n = s1.find('w')) != string::npos) {
	cout << n << s1.substr(n) << endl;	// 5 world
}
if ((n = s1.find("wo")) != string::npos) {
	cout << n << s1.substr(n) << endl;	// 5 world
}
if ((n = s1.find_first_of("l")) != string::npos) {
	cout << n << s1.substr(n) << endl;	// 2 lloworld
}
if ((n = s1.find_last_of("l", 3)) != string::npos) {
	cout << n << s1.substr(n) << endl;	// 8 ld
}
if ((n = s1.find_first_not_of("hel")) != string::npos) {
	cout << n << s1.substr(n) << endl;	// 4 oworld
}

9. 替换

string s1("hello"), s2("world");		// hello world
s1.replace(1, 2, "123456", 2, 3);		// h345lo
s1.replace(1, 2, 3, 'k');				// hkkk5lo	
s1.replace(1, 2, s2, 3, 2);				// hldk5lo	

10. 删除

string s1("helloworld");				// hello world
s1.erase(1, 2);							// hloworld
s1.erase(4);							// hlow

11. 插入

string s1("hello"), s2("world");		// hello world
s1.insert(3, s2, 1, 3);					// helorllo
s1.insert(2, 3, 'k');					// hekkklorllo

12. 排序

static bool cmp(char c1, char c2) {return c1 > c2;}
string s1("helloworld");
sort(s1.begin(), s1.end());				// dehllloorw
sort(s1.begin(), s1.end(), cmp);		// wroolllhed

set / unordered_set

1. 赋值

set<int> sett;
vector<int> vec = {1, 2, 3, 4, 5, 6};
set<int> sett(vec.begin(), vec.end());
auto it = vec.begin();
set<int> sett(it + 1, it + 3);

2. 长度

sett.size();

3. 插入

set<int> sett;
vector<int> vec = {1, 2, 3}, vec2 = {4, 5 ,6};
set<int> sett(vec.begin(), vec.end());
sett.insert(4);

4. 个数

vector<int> vec = {1, 2, 3, 8, 4, 6, 5, 3, 3, 4};	// 1234568
set<int> sett(vec.begin(), vec.end());
sett.count(3);			// 有就为 1 没有为 0

5. 删除

vector<int> vec = {1, 2, 3, 8, 4, 6, 5, 3, 3, 4};	// 1234568
set<int> sett(vec.begin(), vec.end());
sett.erase(3)										// 124568

6. 查找

it = set.find(2);
cout << *it;										// 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进击的小老虎丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值