在python语言中,不可变对象作为函数参数的使用的是值传递,可变对象作为函数参数,相当于C语言的引用传递。
在c++语言中,向STL容器中的添加对象时,使用的是值传递,或者说是深拷贝,这带来的直接问题就是:对STL容器中的对象进行改变,并不会同时到STL容器外的原始对象。
但想要将STL内外的元素同步也是可以实现的,具体方法就是使用指针。
1.定义指针
首先定义一个unordered_map
类型的对象map1
,其中key
为string
类型,value
为vector
类型。
unordered_map<string, vector<string>* > map1;
2.向容器中添加指针
定义一个string
类型的vector
对象v1
并存入一个"hello world!"
字符串;然后将"str1"
字符串作为key
,v1
的地址作为value
,以pair
键值对的形式存入map1
中(使用&
关键字提取对象的地址)。
vector<string> v1;
v1.push_back("hello world!");
map1.insert(make_pair("str1", &v1));
3.操作容器中指针指向的对象
使用find
函数和->second
关键字提取map1
中的指定key
的value
的指针,其中,第二个->
的作用的提取指针指向对象的成员变量和方法。
unordered_map<string, vector<string>* >::iterator it = map1.find("str1");
if (it != map1.end())
{
it->second->push_back(planslist[j].plan_num);
}