vector<typename> p 和vector<typename> *p

C++指针与智能指针使用技巧
本文探讨了C++中使用原始指针和智能指针访问vector及unordered_map元素的方法,包括基于下标和迭代器的访问方式,同时强调了代码规范和智能指针的正确使用。

今天遇到这样一个问题,就是函数的一个参数类似这样的 vector<int> *p 。开始还觉得有点怪怪的。
其实是这边项目中有个代码规范,如果传引用,就要一定要使用const进行修饰,为了能够在函数类能够修改传入的东西
所以就传入了一个类似vector< int > *p的指针。

其实对与p中的元素访问有基本的两种

1.基于迭代器访问

这个很简单,就不写范例

2.基于下标的访问

比如访问第一元素可以写成这样

std::cout<<(*p)[0]<<std::endl;

2、

为了符合上述的代码规范问题
有些代码写成这样,这里的代码是举得例子,实际还要遵守其他的代码规范

using iSet = std::unordered_map<std::string, std::string>;
    iSet *p = new iSet();
    p->insert(std::make_pair("1","1"));
    std::cout<<(*p)["1"]<<std::endl;
    std::cout<<p->find("1")->second<<std::endl;
    delete p;

当然了也可以用智能指针

using iSet = std::unordered_map<std::string, std::string>;

    std::shared_ptr<iSet> map_ptr = std::make_shared<iSet>();
    map_ptr->insert(std::make_pair("1","1"));
    std::cout<<(*map_ptr)["1"]<<std::endl;
    std::cout<<map_ptr->find("1")->second<<std::endl;

使用智能指针时别忘了头文件#include <memory>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值