acm的STL应用之vector篇

2018-07-12

在acm中c++使用vector

Vector是什么?

1.vector介绍以及常用指令

专业来说:

  vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库

  vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象

  

简单来说:

vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

长度灵活,不需要维护长度。

可以装下所有基本数据类型,也可以装用户定义的结构体

需要声明头文件以及命名空间。

因为总是需要输入输出数据,所以顺便声明iostream了

#include<vector>
#include<iostream>
using namespace std;

声明一个容器

vector<int> ivec;

ivec.at(idx):传回索引idx所指的数据,如果idx越界,抛出out_of_range。

ivec.back():传回最后一个数据,不检查这个数据是否存在。

ivec.begin():传回迭代器重的可一个数据。

ivec.front():传回第一个数据。

ivec.end():指向迭代器中的最后一个数据地址。

ivec.clear():移除容器中所有数据。

ivec.empty():判断容器是否为空。

ivec.size():返回当前容器的大小。

ivec.erase(pos):删除pos位置的数据,传回下一个数据的位置。

ivec.pop_back():删除最后一个数据。

ivec.push_back(elem):在尾部加入一个数据。

 1 //sample input
 2 int main(){
 3
 4     vector<int> vec;
 5     vec.push_back(3);
 6     vec.push_back(4);
 7     vec.push_back(3);
 8     cout<<vec.at(1)<<endl;
 9     cout<<vec[1]<<endl;
10
11     return 0;
12 }
//sample output
4
4

可见,访问容易中的数据有2中方法。数组访问和用at(index)访问。

(待完善)

原文地址:https://www.cnblogs.com/VsKendo/p/9298341.html

时间: 2024-08-30 16:34:18

acm的STL应用之vector篇的相关文章

acm的STL容器之队列篇

优先队列,即Priority Queues 1.简单介绍一下队列(介绍功能,不作分析) C++队列是一种容器适配器,它给予程序员一种先进先出(FIFO)的数据结构.1.back() 返回一个引用,指向最后一个元素2.empty() 如果队列空则返回真3.front() 返回第一个元素4.pop() 删除第一个元素5.push() 在末尾加入一个元素6.size() 返回队列中元素的个数 简介:队列可以用线性表(list)或双向队列(deque)来实现(注意vector container 不能用

STL学习——Vector篇

STL学习--Vector篇 vector简介 vector的数据安排及操作方式与array非常相似,两者的区别在于空间运用的灵活性.array是静态空间,一旦配置了,就不能改变:要换个大(或小)一点的可以,但琐碎的事由客户端完成:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还给系统.而vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素.它对内存的合理利用和灵活运用有很大的帮助. vector实现关键技术:对大小的控制以及重新配置时的数据移动效率

STL中的Vector相关用法

STL中的Vector相关用法 标准库vector类型使用需要的头文件:#include <vector>. vector 是一个类模板,不是一种数据类型,vector<int>是一种数据类型. Vector的存储空间是连续的,list不是连续存储的. 1. 定义和初始化 vector< typeName > v1; //默认v1为空,故下面的赋值是错误的v1[0]=5;//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被

c++ STL中的vector与list为什么没有提供find操作?

map里有,set里也有,vector,list没有,太不公平了吧. 其实应该考虑为什么map,set里有find操作. include<algorithm>里有通用的find操作,通用的find内部是从begin到end进行一次遍历,复杂度是O(n). 通过iterator从begin到end遍历map与set时,得到的结果是按key排序的结果,而不是插入时的顺序(所以这两个容器没有push_back操作), 其实,insert到map与set中的元素会被组织到一颗红黑树上,红黑树是一颗平衡

初探STL容器之Vector

vector 特点: 1.可变长的动态数组 2.使用时包含头文件 #include <vector> 3.支持随机访问迭代器 ? 根据下标随机访问某个元素时间为常数 ? 在尾部添加速度很快 ? 在中间插入慢 成员函数 初始化 vector(); 初始化成空 vector(int n); 初始化成有n个元素 vector(int n, const T & val); 初始化成有n个元素, 每个元素的值都是val,类型是T vector(iterator first, iterator l

转:用STL中的vector动态开辟二维数组

用STL中的vector动态开辟二维数组 源代码:#include <iostream>#include <vector>using namespace std;int main(){ int m, //行数     n; //列数 cout << "input value for m,n:"; cin>>m>>n;  //注意下面这一行:vector<int后两个">"之间要有空格!否则会被认

STL源码--vector(一)

一.vector的特性 vector其中一个特点:内存空间只会增长,不会减小,援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储.设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间.拷贝元素.撤销旧空间,这样性能难以接受.因此STL实现者在对vector进行内存分配时,其实际分配的容量要比当前所需的空间多一些.就是说,vector容器预留了一些额外的存储区,用于存放新添加的元素,这样就不必为每

STL学习——Stack/Queue篇

STL学习--Stack/Queue篇 Stack 概述 stack是一种先进先出的数据结构,只有一个出口,stack允许新增元素,移除元素,取得最顶端元素.但除了最顶端外,没有任何办法可以存取stack其他元素.即不允许遍历行为. 实现 stack实现是以容器为底部结构的,将容器的接口改变,使其符合"先进先出"特性,便形成了一个栈.具体实现可以将底部deque的头端开口封闭,便实现了stack.因为stack具有"修改某物接口,形成另一种风貌"性质,故称为&quo

C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法

每次忘记都去查,真难啊 1 /* 2 C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 3 */ 4 5 /* 6 vector常用用法 7 */ 8 //头文件 9 #include<vector> 10 11 //常用的初始化方法 12 vector<int> v; //直接定义一个整型元素的向量 且未声明长度,其中int的位置可以换成别的数据类型或者结构体等 13 vector<int> v(10);