简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:使用C++之shared_ptr指向结构体的智能指针。
2.应用实例
<1>.std::vector<std::shared_ptr<XML_ParserStruct>>插入智能指针结构体
#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;
}