#浅谈# c++中 指针与STL容器的结合

在python语言中,不可变对象作为函数参数的使用的是值传递,可变对象作为函数参数,相当于C语言的引用传递。
在c++语言中,向STL容器中的添加对象时,使用的是值传递,或者说是深拷贝,这带来的直接问题就是:对STL容器中的对象进行改变,并不会同时到STL容器外的原始对象。
但想要将STL内外的元素同步也是可以实现的,具体方法就是使用指针。

1.定义指针

首先定义一个unordered_map类型的对象map1,其中keystring类型,valuevector类型。

unordered_map<string, vector<string>* > map1;

2.向容器中添加指针

定义一个string类型的vector对象v1并存入一个"hello world!"字符串;然后将"str1"字符串作为keyv1的地址作为value,以pair键值对的形式存入map1中(使用&关键字提取对象的地址)。

vector<string> v1;	
v1.push_back("hello world!");
map1.insert(make_pair("str1", &v1));

3.操作容器中指针指向的对象

使用find函数和->second关键字提取map1中的指定keyvalue的指针,其中,第二个->的作用的提取指针指向对象的成员变量和方法。

unordered_map<string, vector<string>* >::iterator it = map1.find("str1");
if (it != map1.end())
{
	it->second->push_back(planslist[j].plan_num);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

energy_百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值