STL容器基本操作

队列 queue

1
2
3
4
5
6
7
8
9
// 定义:
queue<int> q;
// 基本操作
q.push(item);
q.pop();
q.front();
q.back();
q.size();
q.empty();

双向队列 deque

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
c.assign(begin, end); 将[beg; end)区间中的数据赋值给c,其中begin和end为其他容器的迭代器
c.assign(n, elem); 将n个elem的拷贝赋值给c。
c.at(idx); 如越界,则抛出异常
c.back(), c.front();
c.begin(), c.end();
c.clear();
c.empty();
c.erase(pos); pos为迭代器
c.insert(pos, elem);
c.insert(pos, n, elme);
c.insert(pos, begin, end);
c.max_size();

c.pop_back();
c.pop_front();
c.push_back(elem);
c.push_front(elem);
c.rbegin();
c.rend();

Vector

https://blog.csdn.net/weixin_43930512/article/details/91040416

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// vector初始化
vector<int> vec;
vector<int> vec(5); //声明一个初始大小为5的int向量
vector<int> vec(10, 1); //声明一个初始大小为10且值都是1的向量
vector<int> tmp;
vector<int> vec(tmp); // 声明并用tmp向量初始化vec向量
vector<int> tmp(vec.begin(), vec.end());

// vector常见操作
vec.push_back(v);
vec.insert(vec.begin(), 8); // 在最前面插入新元素8
vec.pop_back();
vec.clear(); //清空
vec.erase(iter); // 迭代器删除
vec.at(0);
vec.front(); //得到头元素
vec.back();
vec.begin(); //返回头元素的指针
vec.end();
vec.size();
vec.max_size(); // 最大可允许的vector元素数量值
vec.capacity(); // vector实际能容纳的大小
vec.empty();
// swap函数,可用于释放过剩的容量

字符串 string

C风格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 初始化
char greeting[] = "Hello";
cout << greeting << endl;
// 常见操作
strcpy(s1, s2); // 把s2的内容复制到s1
strcat(s1, s2);
strlen(s1); //返回s1的长度(不加'\0')sizeof(s1)返回字符串数组大小
strcmp(s1, s2); //如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
strchr(s1, ch); //返回一个指针,指向字符串s1中字符ch第一次出现的位置
strstr(s1, s2); //返回一个指针,指向字符串s1中字符串s2第一次出现的位置

// 使用strchr(s1, ch)
char first[20] = "Hello";
char *p = strchr(first, 'l');
cout << p << endl; // 输出llo

C++风格

这里查看详细的用法:https://blog.csdn.net/weixin_43930512/article/details/91041396

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// string 初始化
string str1("abcd");
string str2(5, 'a'); // 5个a
string str3(5, "abc"); // 5个c
string str4("abcdefg",3); //abc
string str5("abcdefghijk", 3, 5); //defgh, 从第3个位置取5个字符

// string常见操作
增加:+, append, insert, push_back
删除:clear, pop_back, erase
修改:replace, assign, swap
大小:size, length, capacity, max_size, resize, reserve
判断:empty, compare, >=, <=, >, <
其他:getline, string转换, substr, find

string str;
getline(cin, str);

string a = "1234";
int b = atoi(a.c_str());

int a = 123;
string b = to_string(a);

string str = "abc";
reverse(str.begin(), str.end()); // cba