#include
using namespace std;
int main()
{
vector num (5);
for(int i=0;i<5;i++)
cin>>num[i];
//向数组中插入数字
num.push_back(6);//在向量尾部插入6
//遍历打印
//使用迭代器 iterator
//以下是迭代器的基本用法,高能慎用!!!!
vector::iterator it; //得到迭代对象,实际上是一个指针
//it.begin
//从第一个元素迭代
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
return 0;
}
// 运行结果:
/*
2 5 7 9 3
2
5
7
9
3
6
Process returned 0 (0x0) execution time : 4.587 s
Press any key to continue.
*/
//下面演示一下使用快排
#include
#include
#include //算法
using namespace std;
int main()
{
vector num (5);
for(int i=0;i<5;i++)
cin>>num[i];
//向数组中插入数字
num.push_back(6);//在向量尾部插入6
//遍历打印
//使用迭代器 iterator
//以下是迭代器的基本用法,高能慎用!!!!
vector::iterator it; //得到迭代对象,实际上是一个指针
//it.begin
//从第一个元素迭代
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
sort(num.begin(),num.end());
cout<<endl<<endl;
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
return 0;
}
//输出结果:
/*
1 7 9 3 4
1
7
9
3
4
6
1
3
4
6
7
9
Process returned 0 (0x0) execution time : 7.554 s
Press any key to continue.
*/
// 逆序
#include
#include
#include //算法
using namespace std;
int main()
{
vector num (5);
for(int i=0;i<5;i++)
cin>>num[i];
//向数组中插入数字
num.push_back(6);//在向量尾部插入6
//遍历打印
//使用迭代器 iterator
//以下是迭代器的基本用法,高能慎用!!!!
vector::iterator it; //得到迭代对象,实际上是一个指针
//it.begin
//从第一个元素迭代
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
reverse(num.begin(),num.end()); //逆序排序
cout<<endl<<endl;
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
return 0;
}
//输出结果:
1 2 3 4 5
1
2
3
4
5
6
6
5
4
3
2
1
Process returned 0 (0x0) execution time : 8.155 s
Press any key to continue.
*/
3.矢量中的常见函数
==============
clear() | 清除容器中所有数据 |
empty() | 判断容器是否为空 |
size() | 返回容器元素的个数 |
front() | 返回第一个元素 |
insert(pos,num) | 在POS位置插入一个数字 |
pop_back() | 在容器删除最后一个元素 |
push_back() | 在容器末尾加入一个元素 |
resize(num) | 重新设置容器大小 |
begin(),end() | 返回容器首尾元素的迭代器 |
4.从矢量中删除元素
==========
用法示例:
#include
#include
#include //算法
using namespace std;
int main()
{
vector num (5);
for(int i=0;i<5;i++)
cin>>num[i];
num.pop_back();
//遍历打印
//使用迭代器 iterator
//以下是迭代器的基本用法,高能慎用!!!!
vector::iterator it; //得到迭代对象,实际上是一个指针
//it.begin
//从第一个元素迭代
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
return 0;
}
//输出结果:
1 3 5 6 7
1
3
5
6
Process returned 0 (0x0) execution time : 4.096 s
Press any key to continue.
5.清理矢量
==========
用法示例:
#include
#include
#include //算法
using namespace std;
int main()
{
vector num (5);
for(int i=0;i<5;i++)
cin>>num[i];
//遍历打印
//使用迭代器 iterator
//以下是迭代器的基本用法,高能慎用!!!!
vector::iterator it; //得到迭代对象,实际上是一个指针
//it.begin
//从第一个元素迭代
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
num.clear();
cout<<endl<<endl;
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
return 0;
}
// 输出结果
1 5 6 7 8
1
5
6
7
8
Process returned 0 (0x0) execution time : 4.650 s
Press any key to continue.
6.检测一个空矢量
=========
使用empty成员函数,如果矢量为空则返回true,反之返回false;
用法示例:
#include
#include
#include //算法
using namespace std;
int main()
{
vector num (5);
for(int i=0;i<5;i++)
cin>>num[i];
//遍历打印
//使用迭代器 iterator
//以下是迭代器的基本用法,高能慎用!!!!
vector::iterator it; //得到迭代对象,实际上是一个指针
//it.begin
//从第一个元素迭代
for(it=num.begin();it!=num.end();++it) //如果使用it++,则会有缓存现象,导致效率不高
{
cout<<* it<<endl;
}
num.clear();
if(num.empty())
cout<<“num is empty!”<<endl;
else cout<<“num is not empty!”<<endl;
作者2013年从java开发,转做Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。
参与过不少面试,也当面试官 面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!
我整理了一份阿里P7级别的最系统的Android开发主流技术,特别适合有3-5年以上经验的小伙伴深入学习提升。
主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你想深入系统学习Android开发,成为一名合格的高级工程师,可以收藏一下这些Android进阶技术选型
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view;
自定义view,Android开发的基本功。
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发;
未来的方向,高薪必会。
前沿技术;
组件化,热升级,热修复,框架设计
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,CodeChina上可见;
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!
view;**
自定义view,Android开发的基本功。
[外链图片转存中…(img-eKbZSU2a-1718870218935)]
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
[外链图片转存中…(img-ShlAHZp5-1718870218936)]
NDK开发;
未来的方向,高薪必会。
[外链图片转存中…(img-9fVtj6a0-1718870218936)]
前沿技术;
组件化,热升级,热修复,框架设计
[外链图片转存中…(img-BpX3dFus-1718870218937)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,CodeChina上可见;
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!