vector<typename> p 和vector<typename> *p
今天遇到这样一个问题,就是函数的一个参数类似这样的 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>