c++中vector<int>和vector<int*>的用法及区别

作者:军说网事 时间:2023-03-28 02:29:37 

在使用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个字节的地址。

标签:c++,vector,int,int,
0
投稿

猜你喜欢

  • C# 复制与删除文件的实现方法

    2022-01-23 02:36:06
  • cmd中javac和java使用及注意事项详解

    2022-03-25 10:37:36
  • springboot+spring data jpa实现新增及批量新增方式

    2023-01-27 03:45:53
  • Spring注解@Configuration与@Bean注册组件的使用详解

    2022-09-13 01:52:56
  • C#中split用法实例总结

    2023-11-27 11:31:16
  • C#实现字体旋转的方法

    2023-01-19 06:41:40
  • 将Java对象序列化成JSON和XML格式的实例

    2022-09-23 23:39:11
  • MyBatis批量查询、插入、更新、删除的实现示例

    2021-07-21 22:33:16
  • Java 回调函数详解及使用

    2023-11-03 02:32:35
  • java编程求二叉树最大路径问题代码分析

    2023-03-16 20:44:16
  • Android基于ListView实现类似Market分页加载效果示例

    2021-10-01 10:44:32
  • Java中HashMap里面key为null存放到哪

    2023-11-10 02:46:47
  • C语言实现支持动态拓展和销毁的线程池

    2023-05-11 10:47:42
  • 聊聊Redis的单线程模型

    2022-02-21 09:20:42
  • tk.mybatis如何扩展自己的通用mapper

    2022-02-16 04:10:17
  • 图文详解SpringBoot中Log日志的集成

    2023-05-27 09:55:13
  • java实现科研信息管理系统

    2022-05-13 02:49:41
  • 在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法

    2022-11-08 10:05:09
  • 基于Android SQLite的升级详解

    2021-06-24 05:26:05
  • Android集成微信登录的步骤详解

    2023-01-12 15:12:45
  • asp之家 软件编程 m.aspxhome.com