C++之结构体智能指针shared_ptr实例(一百九十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列【原创干货持续更新中......】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮

1.前言

本篇目的:使用C++之shared_ptr指向结构体的智能指针。

2.应用实例

<1>.std::vector<std::shared_ptr<XML_ParserStruct>>插入智能指针结构体

cpp 复制代码
#include <iostream>
#include <memory>
#include <vector>

struct XML_ParserStruct {
  // 结构体成员
  int id;
  std::string name;

  XML_ParserStruct(int _id, const std::string& _name) : id(_id), name(_name) {
  }

  ~XML_ParserStruct() {}
};

int main() {
  //1.way01: 使用 std::make_shared 创建智能指针
  //std::shared_ptr<XML_ParserStruct> mParser = std::make_shared<XML_ParserStruct>(1, "Test1");

  // 使用智能指针访问结构体的成员
  // std::cout << "mParser id: " << mParser->id << std::endl;
  // std::cout << "mParser name: " << mParser->name << std::endl;

  //2.way02:将每个mParser的元素插入vector容器中
  std::vector<std::shared_ptr<XML_ParserStruct>> parserContainer;
  for(int i = 0; i < 10; i ++){
    //way01
    std::shared_ptr<XML_ParserStruct> mParser = std::make_shared<XML_ParserStruct>(i, "Test" + std::to_string(i));

    //way02
    // mParser->id = i;
    // mParser->name = "Test" + std::to_string(i);
    parserContainer.push_back(mParser);
  }

  // 使用范围-based for 循环遍历容器中的元素
  //for (const auto& parser : parserContainer) {
  //Or
  for (std::shared_ptr<XML_ParserStruct> parser : parserContainer) {
    printf("id = %d, name = %s \n",parser->id, parser->name.c_str());
  }

  return 0;
}
相关推荐
余额瞒着我当琳4 分钟前
C++异常,异常的概念,异常抛出与捕获,RAII 和智能指针的设计思路,C++标准库一些指针的使用
java·开发语言·c++·算法
東隅已逝,桑榆非晚5 分钟前
map和set的使用
数据结构·c++·笔记·学习
严谨的麻辣烫20 分钟前
固定 IP 稳定性如何检测?使用 Python 实现网络连通性与耗时监控
开发语言·数据库·php
FuckPatience21 分钟前
C# Winform 使用Label循环显示闪烁
开发语言·c#
骑着蜗牛撵大象32725 分钟前
大模型 SDK 编译就崩?用 CMakeLists 把 httplib、JSON 与 OpenSSL 装配成可复用的 ChatServer
android·java·c++·http·json·cmake·大模型sdk
码小猿的CPP工坊1 小时前
C++跨平台开发之基于wxWidgets开发GUI程序简介-002
开发语言·c++
波力海苔夹心脆6751 小时前
C# 固高 GTS 运动控制卡入门:伺服上下电、Jog 点动与二维插补(WinForms 实战)
服务器·开发语言·c#·运动控制·伺服电机·winforms·固高
海绵宝宝转agent1 小时前
LeetCode100个人题解+java面经总结
java·开发语言·笔记·学习·算法
chenbingjie_c1 小时前
C++ 继承全解析(从三种继承方式到菱形继承与内存布局)
开发语言·c++