一、求字符串和数组等长度
(1)C++中,a.size可以求各种容器的元素个数,如string,栈,队列,vevtor等;
(2)C++中,求string长度还可用str.length();
(3)C++求各种容器和数组长度,主要是数组元素个数:sizeof(s)/sizeof(s[0]);
(4)C语言中求字符数组中的元素个数,可以使用strlen(s)。但是求数字数组不能用,只能用sizeof(s)/sizeof(s[0])。
二、Vector用法
2.1 vector初始化
(1)vector<int> a(10); //定义了10个整型元素的向量
(2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1
(3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值
(4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素
(5)int b[7]={1,2,3,4,5,9,8};
vector<int> a(b,b+7); //从数组中获得初值
(6)vector<int> ilist1;默认初始化,vector为空, size为0,还没有分配内存空间
(7)vector<int> ilist {1,2,3.0,4,5,6,7};ilist 初始化为列表中元素的拷贝,列表中元素必须与ilist的元素类型相容,整形会直接拷贝,其他类型会进行类型转换。
2.2 vector重要操作
(1)a.front(); //返回a的第一个元素
(2)a.empty(); //判断a是否为空,空则返回ture,不空则返回false
(3)a.pop_back(); //删除a向量的最后一个元素
(4)a.erase(a.begin()+0,a.begin()+3); //删除a中第0个到第2个元素
(5)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
(6)a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5
(7)a.size(); //返回a中元素的个数;
(8)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<
2.3 顺序访问vector
1. 添加元素
没有说明长度,一般末位添加,肯定使用push_back:
vector<int> b;
for(int i=1;i<=4;i++)
b.push_back(i);
2. 访问元素
?一般会有两种方式,即迭代器访问和for循环中用size访问:
vector<int> a;
for(int i=0;i<a.size();i++) //解法1
cout<<a[i]<<endl;
for(vector<int>::iterator it=a.begin();it<a.end();it++) //解法2
cout<<*it<<endl;
2.4 几种重要的算法
#include<algorithm>
(1)sort(a.begin(),a.end());
//对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
(2)reverse(a.begin(),a.end());
//对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置
(3)copy(a.begin(),a.end(),b.begin()+1);
//把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置开始复制,覆盖掉原有元素
(4)find(a.begin(),a.end(),10); //在a中的从a.begin()到a.end()的元素中查找10,若存在返回其在向量中的位置
vector<int>::iterator pos;
pos=find(a.begin(),a.end(),n);
if(pos!=a.end()) return false;
else return true;
|