vector

特点:

1.可变长的动态数组

2.使用时包括头文件 #include <vector>

3.支持随机訪问迭代器

• 依据下标随机訪问某个元素时间为常数

• 在尾部加入速度非常快

• 在中间插入慢

成员函数

初始化

vector();              初始化成空
vector(int n); 初始化成有n个元素
vector(int n, const T & val); 初始化成有n个元素, 每一个元素的值都是val,类型是T
vector(iterator first, iterator last); 初始化为与别的容器上区间[first, last)一致的内容

举例:

1.创建一个int类型的空的vector对象:

  vector<int> intvec;

2.创建一个包括5个int类型数据的vector:

    vector<int> intvec(5);

3.创建一个包括5个int类型数据的vector,而且都初始化为2:

vector<int> intvec(5, int(2));

4.通过复制某vec容器来创建

vector<int> intvec(vec.begin+M,vec.begin+N)

元素的訪问

intvec.at(index)

返回由index指定的位置上的元素

intvec[index]

返回由index指定的位置上的元素

举例:

include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec(10);
for (int i = 0;i != vec.size();i++)
{
vec.at(i) = i;
//vec[i] = i ;
} for (int i = 0;i != vec.size();i++)
{
cout << vec.at(i)<<endl;
//cout <<vec[i]<<endl;
} return 0;
}

容器的大小

表达式

作用

intvec.capacity()

返回不又一次分配空间能够插入到容器intvec中的元素的最大个数

intvec.empty()

容器intvec为空。返回true;否则,返回false

Intvec.size()

返回容器intvec中当前的个数

intvec.resize(num)

将元素个数改为num。假设size()添加,默认的构造函数负责创建这些新元素

intvec.resize(num, elem)

将元素个数改为num。

假设size()添加,默认的构造函数将这些新元素初始化为elem

举例:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec1;
cout << vec1.empty()<<endl; //返回1
cout << vec1.size()<<endl; //返回0 vector<int> vec2(20);
cout << vec2.empty()<<endl; //返回0
cout << vec2.size()<<endl; //返回20 vector<int> vec3(15,1);
cout << vec3.capacity()<<endl;//返回15
vec3.push_back(1);
cout << vec3.size()<<endl; //返回16
cout << vec3.capacity()<<endl;//返回30
//数组不够时。下次又一次分配时会扩大为两倍 return 0;
}

容器的操作

语句

作用

intvec.clear()

从容器中删除全部元素

intvec.erase(position)

删除由position指定的位置上的元素

intvec.erase(beg,end)

删除从beg到end-1之间的全部元素

intvec.insert(position, elem)

将elem的一个拷贝插入到由position指定的位置上,并返回新元素的位置

intvec.inser(position, n, elem)

将elem的n个拷贝插入到由 position指定的位置上

intvec.insert(position, beg, end)

将从beg到end-1之间的全部元素的拷贝插入到intvec中由position指定的位置上

intvec.push_back(elem)

将elem的一个拷贝插入到vector的末尾

intvec.pop_back()

删除最后元素

intvec.front()

返回第一个元素的引用,不检查容器是否为空

Intvec.back()

返回最后一个元素的引用,不检查容器是否为空

#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec(10,1);
cout<<vec.empty()<<endl; //返回0
vec.clear();
cout<<vec.empty()<<endl; //返回1 vector<int> vec1(1,1);
vec1.insert(vec1.begin()+1,2); //在该位置插入,把原来该位置以其以后的元素总体后移
for(int i = 0;i != vec1.size();i++)
cout<<vec1.at(i); //12
cout<<endl; vec1.push_back(3);
for(int i = 0;i != vec1.size();i++)
cout<<vec1.at(i); //123
cout<<endl; vec1.pop_back();
vec1.pop_back();
for(int i = 0;i != vec1.size();i++)
cout<<vec1.at(i); //1
cout<<endl; return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> vec(10,1);
vec.push_back(2);//12 cout<<vec.front()<<endl; //返回1
cout<<vec.back()<<endl; //返回2 int &head = vec.front();
head++;
int &tail = vec.back();
tail--;
cout<<vec.front()<<endl; //返回2
cout<<vec.back()<<endl; //返回1 return 0;
}

二维数组

vector< vector<int> > v(3);

//v有3个元素,

//每一个元素都是vector<int> 容器

#include <iostream>
#include <vector>
using namespace std;
int main() {
vector< vector<int> > v(3);
for(int i=0; i<v.size(); ++i)
for(int j=0; j<4; ++j)
v[i].push_back(j);
for(int i=0; i<v.size(); ++i){
for(int j=0; j<v[i].size(); ++j)
cout<<v[i][j]<<" ";
cout<<endl;
}
return 0;
}

输出:

0  1  2  3

0  1  2  3

0  1  2  3

版权声明:本文博客原创文章,博客,未经同意,不得转载。

初步STL集装箱Vector的更多相关文章

  1. 初步STL集装箱List

    List 特点: 1.它实质上是一个双向链表 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ3hpYW9idXB0/font/5a6L5L2T/f ...

  2. STL初步学习(vector)

    前文 初三下学期进入新的学习,对于前两年的学习内容因为各种原因 上课打游戏,睡觉,看视频 已经遗忘,忘记如何使用,算是重新学习一次信息学,希望能尽快将以前的内容弥补上来,争取能在CSP-2020取得一 ...

  3. C++的STL中vector内存分配方法的简单探索

    STL中vector什么时候会自动分配内存,又是怎么分配的呢? 环境:Linux  CentOS 5.2 1.代码 #include <vector> #include <stdio ...

  4. 带你深入理解STL之Vector容器

    C++内置了数组的类型,在使用数组的时候,必须指定数组的长度,一旦配置了就不能改变了,通常我们的做法是:尽量配置一个大的空间,以免不够用,这样做的缺点是比较浪费空间,预估空间不当会引起很多不便. ST ...

  5. C++STL之Vector向量详解,用法和例子 一起学习 一起加油

                                                                                    C++ STL之vector用法总结 1 ...

  6. STL中vector、list、deque和map的区别

    1 vector     向量 相当于一个数组    在内存中分配一块连续的内存空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capac ...

  7. 【转】STL中vector、list、deque和map的区别

    1.vector 向量 相当于一个数组 在内存中分配一块连续的内容空间进行存储.支持不指定vector大小的存储.STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacity()函数 ...

  8. C++-STL:vector用法总结

    目录 简介 用法 1. 头文件 2. vector的声明及初始化 3. vector基本操作 简介 vector,是同一类型的对象的集合,这一集合可看作可变大小的数组,是顺序容器的一种.相比于数组,应 ...

  9. 从零开始写STL—容器—vector

    从0开始写STL-容器-vector vector又称为动态数组,那么动态体现在哪里?vector和一般的数组又有什么区别?vector中各个函数的实现原理是怎样的,我们怎样使用会更高效? 以上内容我 ...

随机推荐

  1. c# winform 子窗体访问父窗体中的方法和变量

    今天的工作中突然用到这个了,不过以前没有接触过呢!不过,在有经验的同事的帮助下,这个问题也很快解决了.具体可以分为以下几种方式: 1.在父窗体中构造子窗体对象时,将父窗体传递过去: 如:FrmSub ...

  2. Linux lamp环境编译安装

    1.安装准备: 1)httpd-2.0.52.tar.gz 2)mysql-4.1.12.tar.gz 3)libxml2-2.6.27.tar 4)freetype-2.1.10.tar 5)gd- ...

  3. ZooKeeperEclipse 小工具

    插件地址:ZooKeeperEclipse  http://www.massedynamic.org/eclipse/updates/ 安装ZooKeeperEclipse插件过程例如以下: Step ...

  4. HibernateReview Day1 - Introduction

    Hibernate已经学过去大概有半个月了,然后默默的忘掉了……所谓Practice makes perfect. 我尽力重新拾起来. 1.什么是ORM 在介绍Hibernate之前,我们先学习下OR ...

  5. 通信协议:HTTP、TCP、UDP(转)

    原文出处: 碧雪轩的博客 TCP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务. TCP   HTTP   UDP三者的关系 ...

  6. memcached 分布式聚类算法

    memcached 分布式集群,该决定必须书面开发商自己.和redis 由分布式server决定.上 memcached 有两个选项用于分布式.第一个是:模运算 另一种是:一致性hash 分布式算法. ...

  7. 怎么做fastreport使用离线数据源

    近期使用做项目发现fastreport使用在线数据源.紧密耦合的数据库连接字符串.在部署稍加注意.easy错误.因此,是否想到脱机使用的数据源. 官方参考: watermark/2/text/aHR0 ...

  8. 每天一点儿JAVA-向量的操作

    package java_prac2; import java.util.*; /** * <p>Title: 矢量操作</p> * <p>Description: ...

  9. Qt 3D研究(九):尝试第二边缘检测方法

    Qt 3D研究(九):尝试第二边缘检测方法 三维应用程序,通过FBO.将3D图像渲染成纹理,然后对渲染成的纹理进行图像处理,终于显示在屏幕上的.是风格化后的图案.上一次我使用了一种普通的图像处理方法: ...

  10. android 读,写图片sd网卡资源

    <pre name="code" class="html"><!--<span style="font-family: Ari ...