基本知识:

    

1)vector 样子  其实就是一个动态数组:

    

2)vector的基本操作:    

    

3)vector对象的默认构造

    

    对于类  添加到  容器中  要有  拷贝构造函数---》 这个注意

------(1) 利用  v1.size()  来求容器中元素的个数

  

      

 #include<iostream>
#include<vector>
using namespace std;
void hanshu()
{
vector<int> v1;
v1.push_back();
v1.push_back();
v1.push_back();
//这个 size() 就是在求容器的长度
cout<<v1.size()<<endl;
//
}
int main()
{
hanshu();
return ;
}

  

 ---------(2)求这个动态数组的最后一个元素和 第一个元素

    

        

 #include<iostream>
#include<vector>
using namespace std;
void hanshu()
{
vector<int> v1;
v1.push_back();
v1.push_back();
v1.push_back(); //求解第一个元素值
cout<<v1.front()<<endl;
//求解最后一个元素的值
cout<<v1.back()<<endl; }
int main()
{
hanshu();
return ;
}

   ---------(3)修改容器的头部信息

 #include<iostream>
#include<vector>
using namespace std;
void hanshu()
{
vector<int> v1;
v1.push_back();
v1.push_back();
v1.push_back();
//函数返回值作为左值成立,那么是返回一个引用
//修改第一个元素值
v1.front()=; }
int main()
{
hanshu();
return ;
}

----------------------(4)vector赋值

      

  

---------------(5)vector末尾添加或移除数据

      

  --------------(6)存取vector数据

          

    ---(7)vector中的拷贝构造函数,如果没有自己定义  那么就是  浅拷贝,浅拷贝,浅拷贝,浅拷贝,浅拷贝----

      

    主要是由于push_back函数引起的。这个函数会对传递进来的参数进行一次拷贝(调用拷贝构造函数),并将其添加到vector中。如果对象没有拷贝构造函数,编译器会为其生成一个,但是这个编译器生成的拷贝构造函数只是进行了一次浅拷贝,在本例中就是只是复制了str的值,也就是"strend micro"的地址,即拷贝后的对象和原对象的str都是指向同一块内存区域,但是这个拷贝的对象和原对象的析构函数又都会执行,这里就会delete两次。(注意,即使对于一个空类,编译器也会默认生成4个成员函数:默认构造函数,析构函数,拷贝构造函数,赋值函数。)

-------------------(8)迭代器的基本原理

      

----------(9)vector的数据删除

    

 理论知识
 vector.clear(); //移除容器的所有数据
 vec.erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
 vec.erase(pos); //删除pos位置的数据,返回下一个数据的位置。
简单案例:
删除区间内的元素
vecInt是用vector<int>声明的容器,现已包含按顺序的1,,,,9元素。
vector<int>::iterator itBegin=vecInt.begin()+;
vector<int>::iterator itEnd=vecInt.begin()+;
vecInt.erase(itBegin,itEnd);
//此时容器vecInt包含按顺序的1,6,9三个元素。 假设 vecInt 包含1,,,,,,,,,,删除容器中等于3的元素
for(vector<int>::iterator it=vecInt.being(); it!=vecInt.end(); ) //小括号里不需写 ++it
{
if(*it == )
{
it = vecInt.erase(it); //以迭代器为参数,删除元素3,并把数据删除后的下一个元素位置返回给迭代器。
//此时,不执行 ++it;
}
else
{
++it;
}
} //删除vecInt的所有元素
vecInt.clear(); //容器为空

最新文章

  1. 【续集】在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题
  2. 在线预览Office文件【效果类似百度文库】
  3. MVVM架构~knockoutjs系列之验证信息自定义输出~再续
  4. PHP 小方法之 随机生成几位字符串
  5. .NET: WPF Binding对数据的校验和转换以及多路Binding
  6. bzoj1036: [ZJOI2008]树的统计Count 树链剖分+线段树
  7. FlowLayoutPanel autowrapping doesn&#39;t work with autosize
  8. hadoop错误Could not obtain block blk_XXX_YYY from any node:java.io.IOException:No live nodes contain current block
  9. 解决MVC项目中,静态html 未找到时候,404的跳转
  10. python2.X和python3.X在同一平台下的切换技巧
  11. es5和es6实现lazyman
  12. [转]python json.dumps 中的ensure_ascii 参数引起的中文编码
  13. shell 删除颜色代码
  14. 1.3 解决pip使用异常问题
  15. C# winfrom 通过代码 删除TableLayoutPanel控件的一行或列
  16. Java虚拟机性能管理神器 - VisualVM(3) 插件安装与更新路径配置
  17. Oracle 11.2.0.4在线(Online mode)打补丁14084247解决WRH$_ACTIVE_SESSION_HISTORY不会自动切割的问题
  18. Solution Explorer 和 Source Control Explorer 的 View History 异同
  19. mysql utf8mb4 所引起的问题
  20. 硬件日志:/var/log/dmesg

热门文章

  1. VS Code 单文件、多文件(工程) 配置文件
  2. Mysql 事务隔离级别分析
  3. you-get加ffmpeg获取视频素材并转格式
  4. ACM-数细胞
  5. SecureCRT打开文件中文乱码
  6. CodeForces - 401C Team(简单构造)
  7. UVA - 11582 Colossal Fibonacci Numbers! (巨大的斐波那契数!)
  8. mongodb安装到配置问题
  9. Kmeans应用
  10. Day2-T1