设为首页 加入收藏

TOP

C++STL之Vector向量详解,用法和例子 一起学习 一起加油(一)
2018-11-11 16:08:08 】 浏览:261
Tags:STL Vector 向量 详解 用法 例子 一起 学习 加油

                                                                                C++ STL之vector用法总结

  • 1.vector是可变大小数组的序列容器
  • 2.像数组一样,vector也采用连续储存空间来储存元素,就是说可以采用下标
  • 对数组进行访问,大小可变,会被容器自动处理
  • 3.本质讲,vector使用动态分配数组来存储它的元素。
  • 当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。
  • 其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而言,
  • 这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,
  • vector并不会每次都重新分配大小。
  • 4.与其它动态序列容器相比(deques, lists and forward_lists),
  • vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。
  • 对于其它不在末尾的删除和插入操作,效率更低。
  • 比起lists和forward_lists统一的迭代器和引用更好。

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;
//vector的声明及初始化

 1 vector<int> vec; //声明一个int型向量
 2 vector<int> vec1(5); //声明一个初始大小为5的int向量
 3 vector<int> vec2(10, 1); //声明一个初始大小为10且值都为1的向量
 4 vector<int> vec3(vec1); //声明并用vec1向量初始化vec3向量
 5 vector<int> tmp(vec2.begin(), vec2.begin() + 3); //用向量vec的第0个到第二个初始化tmp
 6 int arr[5] = { 1,2,3,4,5 };  7 vector<int> vec4(arr, arr+5); //将arr数组的元素用于初始化vec向量  8 //说明::::不包括arr[4]元素,末尾指针都是指结束元素的下一个元素  9 //为了和vec.end()指针统一
10 vector<int> vec5(arr, &arr[4]);

 


//vector基本操作
//1.容量
/*
向量大小:vec.size()
向量最大容量:vec.max_size()
更改向量大小: vec.resize()
向量真实大小: vec.cappcity()
向量判空: vec.empty()
减少向量大小到满足元素所占储存空间的大小 : vec.shrink_to_fit();
*/

测试代码 

 1 void main() {  2 cout << vec4.size() << ends <<vec4.capacity() <<ends<<vec.max_size()<< endl;  3 cout << vec4.empty() << endl; //空为1,非空为0
 4 cout << vec.empty() << endl;  5 vec.push_back(32);  6 for (int i = 0; i < 40; i++)  7 {  8 vec.push_back(i);  9 } 10 cout << vec.size() << ends << vec.capacity() << endl; 11 vec.shrink_to_fit(); 12 cout << vec.capacity() << endl; 13 for(int i=0;i<vec4.size();i++) 14 cout << vec4[i] << endl; 15 for (int i = 0; i<vec5.size(); i++) 16 cout << vec5[i] << endl; 17 }

 

//2.修改
/*
多个元素赋值: vec.assign() //类似与初始化时用数组赋值
末尾添加元素:vec.push_back()
末尾删除元素 vec.pop_back()
任意位置插入元素 vec.insert()
任意位置删除元素: vec.erase()
交换两个向量元素 vec.swap()
清空向量元素 vec.clear()
*/

测试代码 

 1 int main() {  2 int i;  3 vec2=vec4; //vector可以直接用另一个赋值;
 4 for (i = 0; i < vec2.size(); i++) {  5 cout << vec2[i] << endl;  6 }  7 cout << vec2.size() << ends << vec2.capacity() << endl;  8 //vector assign() 的三种用法
 9 vec2.assign(3,7);    //3个7
10 vec2.assign(arr, arr + 3); //迭代器 数组名 0 1 2 不包括arr+3
11 vec2.assign({ 1,56,89 }); //无名数组的方法进行赋值 12 //vector insert()函数的三种用法
13 vector<char> avector; 14 for (int i = 0; i < 10; i++) { 15 avector.push_back(i + 65); 16 } 17 avector.insert(avector.begin(), 5, 'C');// 1. 在指定loc 前插入val元素,返回指向这个元素的迭代器
18 avector.insert(avector.begin() + 2, 6); //2. 在指定位置loc前插入num个值为val的元素
19 avector.insert(avector.begin()+1,avector.begin(),avector.end()); //3.在指定位置loc前插入区间(start,end) 的所有元素
20 vector<char>::iterator it = avector.begin(); 21 for (; it != avector.end(); it++) { 22 cout << *it << ends; 23 } 24 cout << endl; 25 
26 //vector erase()函数的用法 27 //earse的返回值是返回被删除元素向后的一个元素 28 //vector中erase的作用是删除掉某个位置position或一段区域 29 //(begin, end)中的元素,减少其size。
30 for (it = avec
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇(C/C++学习)17.bitset(位操作) 下一篇my题库

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目