容器
-
Vector容器概念
vector是将元素置于一个动态数组中加以管理的容器。
-
1.1 容器对象的构成
-
默认构造函数
vector采用模板类实现,vector对象的默认构造形式
vector<T> vecT;
vector<int> v1; //一个存放int的vector容器
vector<student> v2; //一个存放student(类对象)的vector容器
-
带参构造函数
vector(begin,end); //构造函数将(begin,end)区间中的元素拷贝给本
身。注意该区间是左闭右开的区间
-
-
vector(n,elem); //构造函数将n个elem拷贝给本身
vector(const vector & v1); //拷贝构造函数
-
//拷贝构造函数
-
-
1.2 vector的赋值
-
vector的赋值
v2.assign(2,288); //改变原来vector中的元素个数和值
v2.assgin(v3.begin(),v3.end()); //使用迭代器重新赋值
int test1[]={1,2,3,4,5};
v2.assign(test1,test1+3); //使用指针赋值
v2=v3; //赋值运算
-
-
1.3 vector的大小
vector.size() ; //返回容器中元素的个数
vector.empty(); //判断容器是否为空
vetctor.resize(num) //重新定义指定容器的长度为num,若容器变长,则以默
认值“0”填充新位置。如果容器变短,则末尾超出容器长
度的元素被删除。
-
//重新定义大小,扩大时指定新增的值
//重新定义大小,扩大时不指定新增的大小, 新增加的默认值为0
//仅重新定义大小
-
-
1.4 vector末尾的添加移除操作
v2.push_back(1); //在容器尾部加入一个元素
v2.pop_back(); //移除容器中最后一个元素
-
1.5 vector的插入
vector.insert(pos,elem); //在pos(迭代器)位置插入一个elem元素的拷贝,返回数
据的位置。
-
插入单个元素
v2.insert(v2.begin()+1,888);//在v2的第二个元素位置插入一个888
vector.insert(pos,n,elem); //在pos(迭代器)位置插入n个elem数据,无返回值。
-
插入多个元素
v2.insert(b2.begin(),3,888);//在v2的开始位置上插入3个888
vector.insert(pos,begin,end); //在pos(迭代器)位置插入(begin,end)区间的数据,无
返回值
v2.insert(v2.begin()+3,v3.begin(),v3.end());//在v2的第3个位置插入v3
总结:此方法效率低,每次插入都要挪动元素位置
-
-
1.6 vector的删除
-
把整个 vector 都删除
v2.clear()
;cout<<"调用 v2.clear() 后"<
-
删除单个元素
v2[1] = 888;
v2.erase(v2.begin()+1);
-
删除多个元素
v2.erase(v2.begin(), v2.begin()+3);
-
-
1.7 vector的返回操作
vector<int> v2(10,2);
-
使用at
v2.at(2); //传回索引值
-
使用下标操作
for(int i=0;i<v2.size();i++)
{
cout<<v2[i]<<endl;
}
-
使用接口返回的引用
v2.front()=555; // v2的第一个元素
v2.back()=999; // v2的最后一个元素
注意:在使用第1,2中方法的时候注意不要越界
-
-
1.8 vector的访问
begin, cbegin 返回指向初始的迭代器)
end,cend返回指向末尾的迭代器
rbegin,crbegin返回指向初始的逆向迭代器
rend,crend返回指向末尾的逆向迭代器
-