c++中vector<int>和vector<int*>的用法区别
在使用STL容器(比如map、list、vector等)的时候,是用放一个对象还是放一个对象指针,即是用vector<int>还是vector<int*>,这里的vector可以换成其他的容器,int可以换成其他基本类型,也可以自定义的数据结构或类。
首先,要说明的是,这两种方式,怎么用都可以实现功能,把一组整型数放到容器里。先看看两种方式在使用的时候的区别。
vector<int> vecTemp;
for (int i=0; i< 10; i++)
{
vecTemp.push_back(i);
}
这种方式不需要动态new内存,当然也不用delete。
vector<int*> vecTemp;
for (int i=0; i< 10; i++)
{
int* nTemp = new int;
nTemp = &i;
vecTemp.push_back(i);
}
std::vector<int*>::iterator Iter;
for(Iter=vecTemp.begin(); Iter!=vecTemp.end(); Iter++)
{
int* temp = *Iter;
delete temp;
temp = NULL;
}
3.两种用法的区别:
1)vector<int>不需要动态操作内存,不用担心内存泄露等问题;vector<int*>要注意new和delete成对使用。
2)当int改变成其他类型或结构或类的时候,用vector<int*>这种方式比较方便,容器里放的内容占用的内存也相对要少一些,指针在用的时候,去申请空间,不用,那就是个占用4个字节的地址。
相关推荐
-
详解C++中的vector容器及用迭代器访问vector的方法
vector vector是相同类型对象的集合.集合中的每个对象有个对应的索引.vector常被称为容器(container). 为了使用vector,需要: #include <vector> using std::vector; vector是一个类模版(class template).C++有函数模版和类模版.模版本身不是函数或类,必须通过指定 类型让编译器去实例化(instantiation)它.比如vector<int> ivec. vector是模版,不是类型.从vec
-
C++中vector的用法实例解析
本文实例展示了C++中的vector用法,分享给大家供大家参考.具体如下: 一.概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小. 例如: // c语言风格 int myHouse[100] ; // 采用vector vector<int> vecMyHouse(100); 当如上定义后,vecMyHouse
-
深入理解C++中的vector类的用法及特性
//<vector> template < class T, class Alloc = allocator<T> > class vector; 向量(Vector)是一个封装了动态大小数组的顺序容器(Sequence container).跟任意其它类型容器一样,它能够存放各种类型的对象.可以简单的认为,向量是一个能够存放任意类型的动态数组. vector类为内置数组提供了一种替代表示,与string类一样 vector 类是随标准 C++引入的标准库的一部分 ,为
-
C++ 中Vector常用基本操作
标准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,下面通过本文给大家介绍,具体内容如下所示: (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的. (5)使用迭代器访问元素. vect
-
C++ vector的用法小结
c++ vector用法 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板. 标准库vector类型使用需要的头文件:#include <vector>.vector 是一个类模板.不是一种数据类型,vector<int>是一种数据类型.Vector的存储空间是连续的,list不是连续存储的. 一. 定义和初始化 vector< typeName > v1
-
c++ vector(向量)使用方法详解(顺序访问vector的多种方式)
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器.vector 是C++ STL的一个重要成员,使用它时需要包含头文件: 复制代码 代码如下: #include<vector>; 一.vector 的初始化:可以有五种方式,举例说明如下: (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的.(2)vector<int> a(10,
-
C++从文本文件读取数据到vector中的方法
前言 大家应该都只奥vector(向量)是 C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.这篇文章介绍的是C++从文本文件读取数据到vector中的方法,下面话不多说,直接来看示例代码吧. 如题,要将如下文本文件读进vector中 示例代码如下 #include <iostream> using namespace std; #include <cmath> #include
-
C++ vector删除符合条件的元素示例分享
C++ vector中实际删除元素使用的是容器vecrot std::vector::erase()方法. C++ 中std::remove()并不删除元素,因为容器的size()没有变化,只是元素的替换. 1.std::vector::erase() 函数原型:iterator erase (iterator position);//删除指定元素 iterator erase (iterator first, iterator last);//删除指定范围内的元素 返回值:指向删除元素(或范围
-
C++中vector容器的常用操作方法实例总结
1 获得容器最后一个元素 ------ 使用 back或rbegin 取得 // back.rbegin 有常量和引用两种形式 std::vector<int> myVector; myVector.back()=3; std::vector<int>::reverse_iterator tailIter; tailIter=myVector.rbegin(); *tailIter=3 2 删除某元素 需要删除某位置的元素,应使用iterator遍历, 不应使用at(i) 方式遍
-
mysql中left join设置条件在on与where时的用法区别分析
本文实例讲述了mysql中left join设置条件在on与where时的用法区别.分享给大家供大家参考,具体如下: 一.首先我们准备两张表来进行测试. CREATE TABLE `a` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(32) DEFAULT '' COMMENT '名称', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET
-
php中strstr、strrchr、substr、stristr四个函数的区别总结
php中strstr.strrchr.substr.stristr四个函数用法区别: php中strstr strrchr substr stristr这四个字符串操作函数特别让人容易混淆,常用的是substr,strstr,基本上可以满足对字符串的操作. 下面介绍一下这个几个函数的区别. 一.strstr和strcchr的区别 strstr 显示第一次找到,要查找的字符串,以及后面的字符串. strrchr 显示最后一次找到,要查找的字符串,以及后面的字符串. 复制代码 代码如下: <?php
-
迅速掌握Java容器中常用的ArrayList类与Vector类用法
ArrayList类 List集合的实例化: List<String> l = new ArrayList<String>(); //使用ArrayList类实例化List集合 List<String> l2 = new LinkedList<String>(); //使用LinkedList类实例化List集合 ArrayList常用方法: add(int index, Object obj); addAll(int, Collection coll);
-
Java中for、while、do while三种循环语句的区别介绍
本文通过实例讲解给大家介绍Java中for.while.do while三种循环语句的区别,具体详情如下所示: 第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } eg: class Dome_For2{ public static void main(String[] args) { //System.out.println("Hello World!"); //求1-10的偶数的和 int sum = 0; fo
-
Java 中普通代码块,构造代码块,静态代码块区别及代码示例
Java中普通代码块,构造代码块,静态代码块区别及代码示例 //执行顺序:(优先级从高到低.)静态代码块>mian方法>构造代码块>构造方法. 其中静态代码块只执行一次.构造代码块在每次创建对象是都会执行. 1 普通代码块 //普通代码块:在方法或语句中出现的{}就称为普通代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--"先出现先执行" public class CodeBlock01{ public static void main(Strin
-
PHP中exec与system用法区别分析
本文实例讲述了PHP中exec与system用法区别,分享给大家供大家参考之用.具体方法如下: 一般来说,在PHP中调用外部命令,可以用exec及system来实现: system() 原型:string system (string command [, int return_var]) system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果.第二个参数是可选的,用来得到命令执行后的状态码. 返回结果: 成功返回0, 失败(命令不存在等原因) 返回 非0值 ex
-
Mysql数据库中数据表的优化、外键与三范式用法实例分析
本文实例讲述了Mysql数据库中数据表的优化.外键与三范式用法.分享给大家供大家参考,具体如下: 数据表优化 将商品信息表进行优化 1.创建商品种类表: create table if not exists goods_cates( id int unsigned primary key auto_increment, name varchar(40) not null ); 2.将商品种类写入商品种类表中: 注意:插入另一个表的查询结果不需要加values insert into goods_
-
C#中的out参数、ref参数和params可变参数用法介绍
out参数: out关键字 通过引用来传递参数,在定义方法和调用方法的时候都必须使用out关键字 简单来讲out可以用来返回多个参数类型. static void Main(string[] args) { string s = "123"; int result; bool b = MyTest(s,out result); } public static bool MyTest(string s, out int result) { bool isTrue; try { resul
-
RxJava中map和flatMap的用法区别源码解析
目录 前言: 作用 使用方法: map flatMap 源码分析 map flatMap 结语 前言: RxJava中提供了大量的操作符,这大大提高了了我们的开发效率.其中最基本的两个变换操作符就是map和flatMap.而其他变换操作符的原理基本与map类似. map和flatMap都是接受一个函数作为参数(Func1)并返回一个被观察者Observable Func1的< I,O >I,O模版分别为输入和输出值的类型,实现Func1的call方法对I类型进行处理后返回O类型数据,只是fla
-
javascript中的=等号个数问题两个跟三个有什么区别
一个等号就是个赋值的作用,主要问题在于两个跟三个等号的区别. javaScript中两个等于号和三个等于号之间的区别 一言以蔽之:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false. ===表示恒等于,比较的两边要绝对的相同 alert(0 == ""); // true alert(0 == false); // true alert("" == false); // true alert(0 === ""); // fa
随机推荐
- 关于vbs 生成静态页面过程中出现的问题
- Java通过卖票理解多线程
- 上传图片js判断图片尺寸和格式兼容IE
- 解析使用js判断只能输入数字、字母等验证的方法(总结)
- ASP.NET中MVC使用AJAX调用JsonResult方法并返回自定义错误信息
- PHP之正则表达式捕获组与非捕获组(详解)
- SQL Server 存储过程的分页
- Android Bitmap详解及Bitmap的内存优化
- JavaScript基本的输出和嵌入式写法教程
- pjblog修改技巧汇总
- 小记一次mysql主从配置解决方案
- Android实现加载状态视图切换效果
- Ajax提交表单并接收json实例代码
- 微信小程序 图片等比例缩放(图片自适应屏幕)
- Mysql中文乱码问题的最佳解决方法
- 批处理实现的网络巡检脚本(PING与端口扫描)
- Mysql用户忘记密码及密码过期问题的处理方法
- LNMP系列教程之 设置404错误页面
- Python爬虫实例_城市公交网络站点数据的爬取方法
- java web实现分页查询实例方法