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(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;
}