c++中vector<int>和vector<int*>的用法及区别
作者:军说网事 发布时间:2023-03-28 02:29:37
标签:c++,vector,int,int,
在使用STL容器(比如map、list、vector等)的时候,是用放一个对象还是放一个对象指针,即是用vector<int>还是vector<int*>,这里的vector可以换成其他的容器,int可以换成其他基本类型,也可以自定义的数据结构或类。
首先,要说明的是,这两种方式,怎么用都可以实现功能,把一组整型数放到容器里。先看看两种方式在使用的时候的区别。
1.vector<int>
vector<int> vecTemp;
for (int i=0; i< 10; i++)
{
vecTemp.push_back(i);
}
这种方式不需要动态new内存,当然也不用delete。
2.vector<int*>
vector<int*> vecTemp;
for (int i=0; i< 10; i++)
{
int* nTemp = new int;
nTemp = &i;
vecTemp.push_back(i);
}
这种方式采用new,当然也要用delete:
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个字节的地址。


猜你喜欢
- 本文实例为大家分享了android实现动态显示隐藏进度条的具体代码,供大家参考,具体内容如下调用ProgressUtil.startProg
- 本文实例为大家分享了Java swing读取txt文件实现学生考试系统的具体代码,供大家参考,具体内容如下主要实现了一个简单的倒计时答题系统
- 定时任务1import lombok.extern.slf4j.Slf4j;/** * @author Created by niugang
- 本文实例讲述了Android使用ViewFlipper和GestrueDetector共同实现滑屏效果。分享给大家供大家参考,具体如下:关于
- Result 类型是许多编程语言中处理错误的常用方式,包括 C# 的 dotNext 库。在本文中,我们将通过例子回顾 C# 中 using
- 本文实例讲述了C#实现自定义windows系统日志的方法。分享给大家供大家参考。具体实现方法如下:using System;using Sy
- Spring-boot目的Spring是为了解决企业应用开发的复杂性而创建的,简化开发Spring如何简化开发1.基于POJO的轻量级和最小
- 末日这天写篇博客吧,既然没来,那就纪念一下。这次谈谈自制控件,也就是自定义控件,先上图,再说1.扩展OpenFileDialog,在Open
- public string NextString(int charLowerBound, int charUpperBound, int l
- 这里之所以说“浅谈”是因为我这里只是简单的介绍如何使用Visual C#进行图像的读入、保存以及对像素的访问。而不涉及太多的算法。一、读取图
- 音乐播放需要调用service,在此,只是简单梳理播放流程。public class PlayMusicService extends Se
- 简介:任务并行库(Task Parellel Library)是BCL的一个类库,极大的简化了并行编程。使用任务并行库执行循环C#当中我们一
- JAVA可以通过反射获取成员变量和静态变量的名称,局部变量就不太可能拿到了。public class Test {public static
- 实现思路其实很简单,就是一个自定义的LinearLayout,并且textView能够循环垂直滚动,而且条目可以点击,显示区域最多显示2个条
- 在前面的一篇文章中,简单的介绍了一下如何实现软键盘不自动弹出,使用的方法是设置android:wind
- 将字符串转换为ASCII编码数组,只要是中文字节码就是ASCII编码63即"?",所以可以由此来进行判断class St
- 理解圆弧绘制GDI+中对于圆弧的绘制,是以给定的长方形(System.Drawing.Rectangle 结构)为边界绘制的椭圆的
- 一.MyBatis简介1)MyBatis 是一款优秀的持久层框架2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结
- 背景介绍在一些需求中,可能存在某些场景,比如先加载自己的bean,然后自己的bean做一些DB操作,初始化配置问题,然后后面的bean基于这
- CircuitBreaker 断路器服务熔断是为了保护我们的服务,比如当某个服务出现问题的时候,控制打向它的流量,让它有时间去恢复,或者限制