Android NDK开发之旅 目录

1.vector类(容器)-初始化、添加和插入

#include #include using namespace std;void main() {    //方式一    cout << "初始化方式1:" << endl;    vector 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 vt1 = vt;    for (int i = 0; i < vt1.size(); ++i) {        cout << vt1[i] << endl;    }    //方式三:复制(指定复制多少内容)    cout << endl << "初始化方式3:" << endl;    cout << endl << "复制所有" << endl;    //以下复制所有    vector vt2(vt.begin(), vt.end());    for (int i = 0; i < vt2.size(); ++i) {        cout << vt1[i] << endl;    }    cout << endl << "复制指定内容" << endl;    //指定复制内容(复制一部分)    vector vt3(vt.begin(), vt.begin() + 2);    for (int i = 0; i < vt3.size(); ++i) {        cout << vt3[i] << endl;    }    cout << endl;    cout << "插入操作" << endl;    //插入内容    vt.insert(vt.end()-1, 'G');    for (int i = 0; i < vt.size(); ++i) {        cout << vt[i] << endl;    }    getchar();}

执行代码

初始化方式1:ABCD初始化方式2:ABCD初始化方式3:复制所有ABCD复制指定内容AB插入操作ABCGD

注意:
vt.size() 在容器说明中 被定义为:unsigned int 类型, 而iint类型,所以会出警告:

C4018   “<”: 有符号/无符号不匹配

正确写法:

for (unsigned  int i = 0; i < vt.size(); ++i)

为了方便大家理解我写成int型, 大家在自己项目中要写正确的数据类型。

2.vector类(容器)-修改和删除

#include #include using namespace std;void main() {    vector 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 << "指定区间删除" << endl;    //指定区间删除    vt.erase(vt.begin(), vt.begin() + 2);    for (int i = 0; i < vt.size(); ++i) {        cout << vt[i] << endl;    }    getchar();}

执行代码

修改:头尾方式修改aBCd下标的方式修改jBCpjBC指定删除元素ACD指定区间删除CD

3.vector类(容器)-遍历

#include #include using namespace std;void main() {    vector 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::iterator it = vt.begin(); it < vt.end(); it++) {        cout << *it << endl;    }    //方式2:迭代器遍历-反向    cout << "迭代器遍历-反向" << endl;    for (vector::reverse_iterator it = vt.rbegin(); it < vt.rend(); it++) {        cout << *it << endl;    }    ////Android 可以如下例子写,AS中可能回报vector iterators incompatible !错误    //for (vector::iterator it = vt.begin(); it < vt.end(); it++) {    //  if (*it == 'A') {    //      vt.erase(it);    //  }    //    //}    //AS中正确写法,如下    for (vector::iterator it = vt.begin(); it < vt.end();) {        if (*it == 'A')        {            it = vt.erase(it);        }else        {            ++it;        }    }    cout << endl << "利用迭代器遍历删除元素" << endl;    for (vector::iterator it = vt.begin(); it < vt.end(); it++) {        cout << *it << endl;    }    getchar();}

执行代码

方式1:ABC方式2迭代器遍历-正向ABC迭代器遍历-反向CBA利用迭代器遍历删除元素BC

4.queue队列-基本使用

#include #include using namespace std;void main() {    //初始化    queue 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();}

执行代码

添加元素队列大小:3添加头部、尾部(原来有就覆盖)队列大小:3OBD

5.queue队列-优先级

#include #include #include  using namespace std;void main() {    cout << endl << "添加元素(默认是按照添加的顺序排列)" << endl;    //5.1 添加元素(默认是按照添加的顺序排列)    queue q;    q.push(10);    q.push(50);    q.push(20);    q.push(5);    //打印    while (!q.empty()) {        cout << q.front() << endl;        q.pop();    }    cout << endl << "最大值优先级队列(从大到小排列)" << endl;    //5.2 最大值优先级队列(从大到小排列)    priority_queue pq1;    pq1.push(10);    pq1.push(50);    pq1.push(20);    pq1.push(5);    while (!pq1.empty()) {        cout << pq1.top() << endl;        pq1.pop();    }    cout << endl << "最小值优先级队列" << endl;    //5.3 最小值优先级队列    //注意:不同额编译器对语法检查有差别    //在AS中进行NDK开发>>符号认为运算符,所以为了避免出现这样的情况,请用空格分离'> >'    priority_queue, greater > pq2;    pq2.push(10);    pq2.push(50);    pq2.push(20);    pq2.push(5);    while (!pq2.empty()) {        cout << pq2.top() << endl;        pq2.pop();    }    getchar();}

执行代码

添加元素(默认是按照添加的顺序排列)1050205最大值优先级队列(从大到小排列)5020105最小值优先级队列5102050

6.deque类(双向队列)-基本使用

#include #include using namespace std;void main() {    cout << endl << "添加元素" << endl;    deque 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::iterator it = dq.begin(); it < dq.end(); it++) {        cout << *it << endl;    }    cout << endl << "修改头部、尾部" << endl;    //修改头部、尾部    dq.back() = 'z';    dq.front() = 'a';    for (deque::iterator it = dq.begin(); it < dq.end(); it++) {        cout << *it << endl;    }    cout << endl << "删除头部、尾部" << endl;    //6.2 删除     //删除第一个    dq.pop_front();    //    //删除最后一个    dq.pop_back();    for (deque::iterator it = dq.begin(); it < dq.end(); it++) {        cout << *it << endl;    }    //6.3 查找一个元素位置    //首先获取元素下标指针    deque::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();}

执行代码

添加元素CBADEF修改头部、尾部aBADEz删除头部、尾部BADE查找D元素位置2

7.stack栈-基本使用

#include #include using namespace std;void main() {    stack st;    st.push(10);    st.push(20);    st.push(30);    while (!st.empty()) {        cout << st.top() << endl;        st.pop();    }    getchar();}

执行代码

302010
特别感谢:

Dream

更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. android Binder的使用方式 示例
  3. curl: (22) The requested URL returned error: 404 Not Found S
  4. Android隐藏标题栏
  5. Android全屏显示(隐藏项目名和通知栏)
  6. 如何查看USB方式连接Android设备的外接设备信息
  7. Android(安卓)studio常用插件
  8. Android(安卓)Service启动方式总结
  9. Volley的基本使用

随机推荐

  1. [转]Android Market 链接的生成与分享
  2. Android自学笔记(番外篇):全面搭建Linux环境
  3. Android 性能分析工具 TraceView
  4. Android(安卓)持续集成实践(二)——配置 Do
  5. android 获取服务器文件流 hander
  6. Android:启动页有短暂白屏的解决方法
  7. Consider adding android:paddingStart=
  8. Android Activity生命週期简介
  9. Android学习博客和文章存档
  10. 接收短信启动相应服务