C++STL容器之vector
程序员文章站
2022-03-22 20:00:53
...
C++STL容器之vector
一般复试机试默认是C++,不能带模板,所以会用STL是非常重要的,接下来就讲讲STL容器vector的基本用法
vector的定义
使用vector的标准模板,就需要在添加vector的头文件,#include。定义如下typename是指定义的向量元素类型,name是定义向量的名字。
vector<typename> name
vector的初始化
vector<int> a(10); // 定义有10个整形的向量a
vector<int> a(10,1)//定义有10个整形的向量a,并且每个元素值都为1
b[] = {1, 2, 3 ,4};
vector<int>a(b, b+4);
vector元素访问
-
可以像数组一样通过元素下标进行访问,下标从0-size()-1
vector<int>a(5,1); for(int i = 0; i < a.size(); i++) printf("%d ", a[i]);
-
可以通过迭代器访问,迭代器类似于指针
vector<int>a(5,1); vector<int>:: iterator it; for(int it = a.begin(); it != a.end(); it++) printf("%d ", *it);
vector元素操作
vector<int> a, b;
a.empty() //判断a是否为空,空则返回true,非空则返回false
a.size() //返回向量元素的个数
a.push_back() //向尾部添加新的元素
a.pop_back() //删除尾部的元素
a.clear() //清空a中的元素
a.back() //返回a的最后一个元素
a.front() //返回a的第一个元素
a.insert(a.begin()+1, 5) //在a的第2个元素的位置插入一个元素5
a.insert(a.begin(), 3, 1) // 在a的第1个元素的位置插入3个元素都是1
a.erase(a.begin(), a.begin()+3) //删除a.begin()到a.begin()+3的元素(不包括a.begin()+3)
vector的一些算法
#include<algorithm>
vector<int> a;
sort(a.begin(), a.end()); // 把a.begin()到a.end()的元素进行从小到大排序(不包括a.end()元素)
find(a.begin(), a,end(), 1); //把a.begin()到a.end()的元素中查找1的元素返回它的位置
样例
上代码
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
vector<int> numberE;
vector<int> numberG;
int Sum(int x)
{
int sum = 0;
for(int i = 1; i < x; i++)
if(x % i == 0) sum += i;
return sum;
}
int main()
{
for(int i = 2; i <= 60; i++)
{
if(i == Sum(i))
numberE.push_back(i);
else if(i < Sum(i))
numberG.push_back(i);
}
printf("E:");
for(int i = 0; i < numberE.size(); i++)
printf(" %d", numberE[i]);
printf("\n");
printf("G:");
for(int i = 0; i < numberG.size(); i++)
printf(" %d", numberG[i]);
printf("\n");
return 0;
}
上一篇: php mysql like 实现多关键词搜索的方法
下一篇: nodejs有什么框架