vector使用小结
1、创建vector容器:
std::vector<int> data;
std::vector<int> data(20);大小20,自动赋值为0
std::vector<int> data(20,9);大小20,并且初始值为9
表示创建vector容器,其容器内的数据类型为int类型。该初始化时,因为容器内没有元素,因而没有分配空间。可以调用reserve()函数增加容器的容量。
2、vector容器的容量和大小
容量:在不分配更多内存的情况下可以保存的最多元素个数。
大小:容器实际所保存的元素个数。
std::vector<int > data;
data.capacity();得到容量大小。
data.size();得到容器实际大小
容器的大小可以使用resize()来改变容器大小。reserve()函数增加容量。
3、访问元素
使用方括号,在方括号中使用引用。下标默认从0开始。使用push_back(),insert(),emplace()插入新的元素。为了安全,防止出现数组下标越界。尽可能使用at()去访问vector元素。
4、增加元素
使用push_back()函数,在序列的末尾添加一个元素。使用emplace_back()也可以达到同样的效果
push_back()和emplace_back()的区别:emplace_back()直接调用构造函数。而push_back()则需要生成对象,然后调用对象构造函数。
5、插入元素
使用emplace()和insert()插入元素
iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
insert() 函数有以下三种用法:
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器,
在指定位置loc前插入num个值为val的元素
在指定位置loc前插入区间[start, end)的所有元素 .
6、删除元素
使用clear()来删除元素,但是该操作并没有改变容器的容量;使用pop_back()函数来删除尾部元素。
使用erase()来删除容器内的一个或者多个元素;remove()可以删除匹配特定特征值的一段元素。
参考代码:
#include <iostream> #include <vector> using namespace std; int main() { cout << "vector 使用示例" << endl; cout << "vector 创建"<<endl; cout << "----------------------------"<<endl; //创建vector的三种方式 vector<int> data; vector<); vector<,); cout << "----------vector容量和大小-----------"<<endl; cout << "容量"<< data1.capacity() << "大小"<<data1.size()<<endl; cout << "容量"<< data2.capacity() << "大小"<<data2.size()<<endl; data1.reserve(); cout << data1.capacity()<<endl; data1.resize(); cout<< data1.size() << "容量"<<data1.capacity()<<endl; cout<< "-----------访问元素----------"<<endl; cout << data2.at() <<]<<endl; cout << data2.front() << " " << data2.back(); cout << "-----------增加元素---------" <<endl; data2.push_back(); data2.emplace_back(); cout << data2.back()<<endl; cout << "-------插入元素-------"<<endl; vector<string> words {"one","two","three"}; auto iter = words.emplace(++begin(words),,'A'); cout << words.at()<<*iter; //insert auto iter1 = words.insert(++std::begin(words),"twowwwww"); cout << *iter1<<endl; cout << "----- 删除元素---------" <<endl; //words.clear();//清楚所有元素,不改变容量 words.pop_back(); cout << *(words.end()-)<<endl; //erase()删除一个或者多个元素 //remove()删除匹配特定值的一段 //std::remove(begin(words),end(words),"two"); cout << words.back()<<endl; ; }
vector使用小结的更多相关文章
- c++第十四天
<c++ primer, 5E> 第91页到第94页,笔记: 1.vector支持的操作. v.empty().v.size().v.push_back(t).v[n] 2.试图通过下标访 ...
- STL中vector小结
()使用vector之前必须包含头文件<vector>:#include<vector> ()namespace std{ template <class T, clas ...
- C++中标准容器Vector,元素操作.insert()小结
insert() 函数有以下三种用法: iterator insert( iterator loc, const TYPE &val ); //在指定位置loc前插入值为val的元素,返回指 ...
- vector的用法小结(待补全
1.vector的好处 支!持!删!除! 节!省!内!存! 2.一点基础的小操作 ①插入操作:v.push_back(x) 在尾部插入元素x: ②删除操作 : v.erase(x)删除地址为x的元素 ...
- ?:,reverse,vector的基本小结
#include <cstdio> //此代码为网上所复制 #include <iostream> #include <string> #include <s ...
- HTML最新标准HTML5小结
写在前面 HTML5出来已经很久了,然而由于本人不是专业搞前端的,只知道有这个东西,具体概念有点模糊(其实就是一系列标准规范啦):因此去年(2015.11.09),专门对HTML5做了个简单的小结,今 ...
- 学习RaphaelJS矢量图形包--Learning Raphael JS Vector Graphics中文翻译(一)
(原文地址:http://www.cnblogs.com/idealer3d/p/LearningRaphaelJSVectorGraphics.html) 前面3篇博文里面,我们讲解了一本叫做< ...
- C++ typedef用法小结 (※不能不看※)
C++ typedef用法小结 (※不能不看※) 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不 ...
- 跟我一起学STL(2)——vector容器详解
一.引言 在上一个专题中,我们介绍了STL中的六大组件,其中容器组件是大多数人经常使用的,因为STL容器是把运用最广的数据结构实现出来,所以我们写应用程序时运用的比较多.然而容器又可以序列式容器和关联 ...
随机推荐
- find the most comfortable road(hdu1598)不错的并查集
find the most comfortable road Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- Idea无法运行Maven项目
导入项目到tomcat的时候要选择Arifact 如果maven项目没有这个选项, <groupId>com.bihang</groupId> <artifactId&g ...
- Mybatis架构简介
一.Mybatis与ORM 对象关系映射(即Object Relational Mapping,简称ORM),主要用于关系型数据库和实体之间的映射,主要为了解决对象与关系数据库存在的互不匹配的现象,O ...
- 【15】模板方法模式(Template Method)
一.引言 提到模板,大家肯定不免想到生活中的“简历模板”.“论文模板”.“Word中模版文件”等.在现实生活中,模板的概念就是——有一个规定的格式,然后每个人都可以根据自己的需求或情况去更新它.例如简 ...
- python常用模块-01
1. 简单了解模块 写的每一个py文件都是一个模块. 还有一些我们一直在使用的模块 buildins 内置模块. print, input random 主要是和随机相关的内容 random() ...
- AsnycLocal与ThreadLocal
AsnycLocal与ThreadLocal AsnyncLocal与ThreadLocal都是存储线程上下文的变量,但是,在实际使用过程中两者又有区别主要的表现在: AsyncLocal变量可以在父 ...
- 关于animation的一些简单基础和使用方法记载
第一次写博客,只是单纯的想把我自己的一些心得和使用过的css3的animation的一些方法记录和总结,方便下次使用,我写的这些都是刚入门适合做一些简单的动画动作,过于复杂的还有待发掘或者使用别的方法 ...
- 关于Web中列表页面的加载问题
2017年5月23日,天气晴朗.尽管昨晚睡的不踏实,好在今天心情还不是很糟糕,近来事情颇多,尤其是对于TA的改变,至少目前还是没有习惯,但时间将会解决一切,这点深有体会.此时此刻,又想起了苏东坡的那首 ...
- OSGI企业应用开发(三)Eclipse中搭建Equinox运行环境
上篇文章介绍了如何在Eclipse中搭建Felix的运行环境,我们需要將Bundle发布到Felix框架的bundle目录下,Felix框架启动时才会自动加载这些Bundle,否则需要在Felix框架 ...
- php 实现简单购物车功能(2)
上一篇的时候只是写了简单的加入购物车功能,购物车中产品的删除.提交订单后,库存的减少 以及客户账户的余额都没有完善, 这一篇是接着完善上一篇的,上一篇写到了购物车中删除的功能了,为了使删除的代码少敲一 ...