1.vector類(容器)-初始化雅宾、添加和插入
#include <iostream>
#include <vector>
using namespace std;
void main() {
//方式一
cout << "初始化方式1:" << endl;
vector<char> vt;
vt.push_back('A');
vt.push_back('B');
vt.push_back('C');
vt.push_back('D');
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
cout << endl << "初始化方式2:" << endl;
//方式二
vector<char> vt1 = vt;
for (int i = 0; i < vt1.size(); ++i) {
cout << vt1[i] << endl;
}
//方式三:復制(指定復制多少內(nèi)容)
cout << endl << "初始化方式3:" << endl;
cout << endl << "復制所有" << endl;
//以下復制所有
vector<char> vt2(vt.begin(), vt.end());
for (int i = 0; i < vt2.size(); ++i) {
cout << vt1[i] << endl;
}
cout << endl << "復制指定內(nèi)容" << endl;
//指定復制內(nèi)容(復制一部分)
vector<char> vt3(vt.begin(), vt.begin() + 2);
for (int i = 0; i < vt3.size(); ++i) {
cout << vt3[i] << endl;
}
cout << endl;
cout << "插入操作" << endl;
//插入內(nèi)容
vt.insert(vt.end()-1, 'G');
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
getchar();
}
執(zhí)行代碼
初始化方式1:
A
B
C
D
初始化方式2:
A
B
C
D
初始化方式3:
復制所有
A
B
C
D
復制指定內(nèi)容
A
B
插入操作
A
B
C
G
D
注意:
vt.size()
在容器說明中 被定義為:unsigned int
類型, 而i
是int
類型钝域,所以會出警告:
C4018 “<”: 有符號/無符號不匹配
正確寫法:
for (unsigned int i = 0; i < vt.size(); ++i)
為了方便大家理解我寫成int型这溅, 大家在自己項目中要寫正確的數(shù)據(jù)類型。
2.vector類(容器)-修改和刪除
#include <iostream>
#include <vector>
using namespace std;
void main() {
vector<char> vt;
vt.push_back('A');
vt.push_back('B');
vt.push_back('C');
vt.push_back('D');
//10.1 修改
cout << "修改:" << endl;
cout << "頭尾方式修改" << endl;
//訪問頭部
vt.front() = 'a';
//訪問尾部
vt.back() = 'd';
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
cout << endl << "下標的方式修改" << endl;
//采用下標的方式修改
vt[0] = 'j';
vt[vt.size() - 1] = 'p';
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
//10.2 刪除元素
//刪除尾部
vt.pop_back();
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
//刪除所有
while (vt.size() > 0) {
vt.pop_back();
}
vt.push_back('A');
vt.push_back('B');
vt.push_back('C');
vt.push_back('D');
cout << endl << "指定刪除元素" << endl;
//指定刪除元素
vt.erase(vt.begin() + 1);
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
//刪除所有
while (vt.size() > 0) {
vt.pop_back();
}
vt.push_back('A');
vt.push_back('B');
vt.push_back('C');
vt.push_back('D');
cout << endl << "指定區(qū)間刪除" << endl;
//指定區(qū)間刪除
vt.erase(vt.begin(), vt.begin() + 2);
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
getchar();
}
執(zhí)行代碼
修改:
頭尾方式修改
a
B
C
d
下標的方式修改
j
B
C
p
j
B
C
指定刪除元素
A
C
D
指定區(qū)間刪除
C
D
3.vector類(容器)-遍歷
#include <iostream>
#include <vector>
using namespace std;
void main() {
vector<char> vt;
vt.push_back('A');
vt.push_back('B');
vt.push_back('C');
//方式1
cout << endl << "方式1:" << endl;
for (int i = 0; i < vt.size(); ++i) {
cout << vt[i] << endl;
}
//方式2:迭代器遍歷-正向
cout << endl << "方式2" << endl;
cout << "迭代器遍歷-正向" << endl;
for (vector<char>::iterator it = vt.begin(); it < vt.end(); it++) {
cout << *it << endl;
}
//方式2:迭代器遍歷-反向
cout << "迭代器遍歷-反向" << endl;
for (vector<char>::reverse_iterator it = vt.rbegin(); it < vt.rend(); it++) {
cout << *it << endl;
}
////Android 可以如下例子寫嚼松,AS中可能回報vector iterators incompatible !錯誤
//for (vector<char>::iterator it = vt.begin(); it < vt.end(); it++) {
// if (*it == 'A') {
// vt.erase(it);
// }
//
//}
//AS中正確寫法八毯,如下
for (vector<char>::iterator it = vt.begin(); it < vt.end();) {
if (*it == 'A')
{
it = vt.erase(it);
}else
{
++it;
}
}
cout << endl << "利用迭代器遍歷刪除元素" << endl;
for (vector<char>::iterator it = vt.begin(); it < vt.end(); it++) {
cout << *it << endl;
}
getchar();
}
執(zhí)行代碼
方式1:
A
B
C
方式2
迭代器遍歷-正向
A
B
C
迭代器遍歷-反向
C
B
A
利用迭代器遍歷刪除元素
B
C
4.queue隊列-基本使用
#include <iostream>
#include <queue>
using namespace std;
void main() {
//初始化
queue<char> q;
cout << endl << "添加元素" << endl;
//添加元素
q.push('A');
q.push('B');
q.push('C');
cout << endl << "隊列大小:" << q.size() << endl;
//添加頭部
q.front() = 'O';
//添加尾部
q.back() = 'D';
cout << endl << "添加頭部绢涡、尾部(原來有就覆蓋)" << endl;
cout << endl << "隊列大小:" << q.size() << endl;
//刪除操作
while (!q.empty()) {
cout << q.front() << endl;
//刪除
q.pop();
}
getchar();
}
執(zhí)行代碼
添加元素
隊列大小:3
添加頭部乓梨、尾部(原來有就覆蓋)
隊列大小:3
O
B
D
5.queue隊列-優(yōu)先級
#include <iostream>
#include <queue>
#include <functional>
using namespace std;
void main() {
cout << endl << "添加元素(默認是按照添加的順序排列)" << endl;
//5.1 添加元素(默認是按照添加的順序排列)
queue<int> q;
q.push(10);
q.push(50);
q.push(20);
q.push(5);
//打印
while (!q.empty()) {
cout << q.front() << endl;
q.pop();
}
cout << endl << "最大值優(yōu)先級隊列(從大到小排列)" << endl;
//5.2 最大值優(yōu)先級隊列(從大到小排列)
priority_queue<int> pq1;
pq1.push(10);
pq1.push(50);
pq1.push(20);
pq1.push(5);
while (!pq1.empty()) {
cout << pq1.top() << endl;
pq1.pop();
}
cout << endl << "最小值優(yōu)先級隊列" << endl;
//5.3 最小值優(yōu)先級隊列
//注意:不同額編譯器對語法檢查有差別
//在AS中進行NDK開發(fā)>>符號認為運算符,所以為了避免出現(xiàn)這樣的情況鳖轰,請用空格分離'> >'
priority_queue<int, vector<int>, greater<int> > pq2;
pq2.push(10);
pq2.push(50);
pq2.push(20);
pq2.push(5);
while (!pq2.empty()) {
cout << pq2.top() << endl;
pq2.pop();
}
getchar();
}
執(zhí)行代碼
添加元素(默認是按照添加的順序排列)
10
50
20
5
最大值優(yōu)先級隊列(從大到小排列)
50
20
10
5
最小值優(yōu)先級隊列
5
10
20
50
6.deque類(雙向隊列)-基本使用
#include <iostream>
#include <deque>
using namespace std;
void main() {
cout << endl << "添加元素" << endl;
deque<char> dq;
//6.1 添加元素
//頭部添加
dq.push_front('A');
dq.push_front('B');
dq.push_front('C');
//尾部添加
dq.push_back('D');
dq.push_back('E');
dq.push_back('F');
for (deque<char>::iterator it = dq.begin(); it < dq.end(); it++) {
cout << *it << endl;
}
cout << endl << "修改頭部清酥、尾部" << endl;
//修改頭部、尾部
dq.back() = 'z';
dq.front() = 'a';
for (deque<char>::iterator it = dq.begin(); it < dq.end(); it++) {
cout << *it << endl;
}
cout << endl << "刪除頭部脆霎、尾部" << endl;
//6.2 刪除
//刪除第一個
dq.pop_front();
// //刪除最后一個
dq.pop_back();
for (deque<char>::iterator it = dq.begin(); it < dq.end(); it++) {
cout << *it << endl;
}
//6.3 查找一個元素位置
//首先獲取元素下標指針
deque<char>::iterator p_index = find(dq.begin(), dq.end(), 'D');
if (p_index != dq.end()) {
//這個方法就是計算兩個指針直接的距離
int index = distance(dq.begin(), p_index);
cout << endl << "查找D元素位置" << endl;
cout << index << endl;
}
getchar();
}
執(zhí)行代碼
添加元素
C
B
A
D
E
F
修改頭部、尾部
a
B
A
D
E
z
刪除頭部狈惫、尾部
B
A
D
E
查找D元素位置
2
7.stack棧-基本使用
#include <iostream>
#include <stack>
using namespace std;
void main() {
stack<int> st;
st.push(10);
st.push(20);
st.push(30);
while (!st.empty()) {
cout << st.top() << endl;
st.pop();
}
getchar();
}
執(zhí)行代碼
30
20
10