1.向量类模板vector
1.1向量是一种随机访问的数组类型,提供了对元素的快速,随机访问,以及在序列尾部快速、随机插入和删除操作,它是大小可变的向量。
2.创建向量vector的方法
std::vector<type> name; 例如std::vector<int> initvector;
std::vector<int> v1(10) ; //v1有10元素,每个元素都初始化为0
std::vector<int> v2{10} ; //v2有1个元素,该元素是10
std::vector<int> v3(10,1) ; // v3有10个元素,每个元素都是1
std::vector<int> v4{10 , 1}; // v4有2个元素,分别为10和1
注意:
std::vector<string> s1{“a”,“b”,"c"} ; //正确,列表初始化
std::vector<string> s2(“a”,“b”,"c") ;//错误
std::vector<string> s3{"hi"} //列表初始化:v3只有一个一个元素
std::vector<string> v4("hi"); //错误,不能使用字符串字面值构建vector对象
std::vector<string> v5{10}; //v5有10个默认值
std::vector<string> v6{10,“hi”};//v6有10个值为hi的元素
1.3vector的常用方法
assign(first,last)使用方法迭代器first和last所辖范围内的元素类替换向量元素
push_back(x)在向量尾添加元素x
pop_back删除向量最后一个元素
insert(i,x)把x值插入向量迭代器i所指明的向量位置
at(n)返回向量中第n位的元素的值
front返回向量起始元素的引用
back返回向量末尾元素的引用
begin返回向量中第一个元素的迭代器
end返回指向向量中最后一个元素的迭代器
size返回向量的大小
capacity返回当前向量最多可以容纳的元素个数
clear清除向量
empty判断向量是否为空
erase(i)删除迭代器i所指向的元素,例如i=iterator.begin
erase(start,end)删除迭代器start和end所辖范围内的向量元素
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class per
{
public:
protected:
private:
};
int main()
{
vector<int> v;
vector<double> d;
vector<string> s;
vector<per> p;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
/*普通方式遍历向量,因为向量可以用下标访问*/
/*int size = v.size();
for (int i = 0; i < size; i++)
{
cout << v[i] << endl;
}*/
/*迭代器方式遍历数组,迭代器是指向数组的一个指针 iterator*/
vector<int>::const_iterator it = v.begin(); //获得向量迭代器
while (it!=v.end())
{
cout << *it++ << endl; //it先自加,再取值it
}
cout << "--------首尾--------" << endl;
cout << "首元素:"<<v.front() <<endl;//第一个元素
cout << "尾元素:"<<v.back() <<endl;//最后一个元素
cout << "----删除第一个元素---" << endl;
it = v.begin();
v.erase(it); //删除第一个元素1 cout <<"向量当前大小:"<<v.size() << endl; cout << "---------at----------" << endl; cout <<"1位置的元素:"<< v.at(1)<<endl;//打印第二个元素 结果为3 cout << "----插入后的数组-----" << endl; it = v.begin(); v.insert(it + 2, 100); //在第二个位置插入元素100 while (it != v.end()) { cout << *it++ << endl; //it先自加,再取值it } system("pause"); return 0; }输出结果如下