c++ vector 常用函数
Just like arrays, vectors use contiguous storage locations for their elements, which means that their elements can also be accessed using offsets on regular pointers to its elements, and just as efficiently as in arrays. But unlike arrays, their size can change dynamically, with their storage being handled automatically by the container.
vector也是一个数组但是它的占用的内存大小是动态变化的。当vector占用的内存满了之后,就要重新分配内存,并且赋值原来的所有元素,为了避免频繁的重新分配内存,迁移数据。vector实际分配的内存比你需要的内存多。比如你有10个int的数据在vector中,vector实际占用的内存是20个int的内存, 当你数据占用超过实际占用内存的比例的时候,vector就会自动重新分配内存,迁移数据. vector实际占用的内存可以用capacity()来查看
#include<iostream> #include<vector> using namespace std; int main(){ vector<int> ans; for(int i=0; i<10; i++) ans.push_back(i); ans.erase(ans.begin()+2); cout<<"擦除第三个数字:"; for(int j=0; j<ans.size(); j++) cout<<ans[j]<<" "; ans.erase(ans.begin(), ans.begin()+2); cout<<endl<<"擦除前2个数字:"; for(int k=0; k<ans.size(); k++) cout<<ans[k]<<" "; //尽量不要频繁使用这个函数,会引起大量数据移动,降低程序效率 ans.insert(ans.begin()+1, 100); cout<<endl<<"在第一位后面插入100:"; for(int m=0; m<ans.size(); m++) cout<<ans[m]<<" "; //vector在声明的时候,可以申明大小和默认值 vector<int> temp(5, -1); cout<<endl<<"temp的大小为5,默认值是-1:"; for(int l=0; l<temp.size(); l++) cout<<temp[l]<<" "; //resize(int n)改变vector实际储存的数据个数, 如果n比实际个数多,则多出的位添加0,否则截取掉多余数据 temp.resize(8); cout<<endl<<"把temp的大小改变位8:"; for(int h=0; h<temp.size(); h++) cout<<temp[h]<<" "; //在改变vector大小的同时还能指定多余内存的值;这种方式只适用于分配的空间比原来的多的情况 temp.resize(10, 1111); cout<<endl<<"temp的大小改为10,并且指定多出来空间的值位11111:"; for(int g=0; g<temp.size(); g++)cout<<temp[g]<<" "; cout<<endl<<"获取temp的第一个元素:"<<temp.front()<<endl<<"获取temp的最后一个元素:"<<temp.back(); //常用empty()和size函数来判断vector是否为空,当vector为空的时候, empty()返回true, size()的值为0 return 0;}
此外可以配合#include<algorithm>库中的unique函数来删除vector中的重复元素
vector<int> ans; ans.erase(unique(ans.begin(), ans.end()), ans.end());
到此这篇关于c++ vector 常用函数示例解析的文章就介绍到这了,更多相关c++ vector 常用函数内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!
本文向大家介绍c++中为什么不提倡使用vector示例详解,包括了c++中为什么不提倡使用vector示例详解的使用技巧和注意事项,需要的朋友参考一下 vector< bool> 并不是一个STL容器,不是一个STL容器,不是一个STL容器! 首先vector< bool> 并不是一个通常意义上的vector容器,这个源自于历史遗留问题。 早在C++98的时候,就有vector< bool>这个类
本文向大家介绍node.js调用C++函数的方法示例,包括了node.js调用C++函数的方法示例的使用技巧和注意事项,需要的朋友参考一下 目前nodejs调用c++主流的有两种方法,分别是addons和ffi addons是nodejs官方的c++扩展实现方案,但是由于需要使用模版,并且要对v8引擎有一定的了解,入门门槛较高。 ffi是nodejs直接调用so库的一种实现,可以调用纯c的接口。
本文向大家介绍简单讲解c++ vector,包括了简单讲解c++ vector的使用技巧和注意事项,需要的朋友参考一下 在c++中,vector是一个十分有用的容器。 作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 特别
本书之前已经介绍过 logstash 如何利用 multiline 或者 log4j 插件解析函数堆栈。那么,对函数堆栈,我们除了对底层函数做基础的 topN 排序,还能深入发掘出来什么信息呢? 下图是一个 PHP 慢函数堆栈的可视化统计: 该图利用了 Kibana4 的 sub aggs 特性。按照分层次的函数堆栈,逐层做 terms agg。得到一个类似火焰图效果的千层饼效果。 和火焰图不同的
本文向大家介绍C++ explicit构造函数实例解析,包括了C++ explicit构造函数实例解析的使用技巧和注意事项,需要的朋友参考一下 按照C语言默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示: 但是有的时候可能会不需要这种隐式转换,如下: 下面两种写法比较正常: 下面两种写法就比较疑惑了: s4 和s5 分别把一个int型和
本文向大家介绍oracle中的一些常用函数及示例,包括了oracle中的一些常用函数及示例的使用技巧和注意事项,需要的朋友参考一下 前言 学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函数及示例,一是为了和大家分享,二是可以在以后工作中忘记了随时查