c++中map的insert函数,请问是拷贝,还是引用?

向map中inset一个pair,myMap.insert(pair<int,myclass>(n,*cla));请问是不是在map中复制了一份cla?而不是引用?... 向map中inset一个pair,
myMap.insert(pair<int, myclass>(n, *cla));
请问是不是在map中复制了一份cla? 而不是引用?
展开
 我来答
iloveu668
2021-01-28
知道答主
回答量:34
采纳率:25%
帮助的人:3.4万
展开全部

// map_Test.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"

#include <map>

#include <iostream>

using namespace std;

int main()

{

class a

{

public:

int z = 8;

};

map<int, a> my_map;

a a1;

cout << "显示初始化a类的值" << std::endl;

cout << a1.z << std::endl;

cout << "加入map中..." << std::endl;

my_map.insert(::pair<int, a>(1, a1));

a1.z = 6;

cout << "++显示map外修改a类值" << std::endl;

cout << a1.z << std::endl;


map<int, a>::iterator iter = my_map.begin();

while (iter != my_map.end())

{

cout << "__打印map中a值" << std::endl;

cout <<iter->second.z<< std::endl;


cout << "获取map中a并修改" << std::endl;

a a2 = iter->second;

a2.z = 3;

cout << a2.z << std::endl;


cout << "__map中a值再打印打印" << std::endl;

cout << iter->second.z << std::endl;


iter->second.z = 9;


cout << "__map中指针直接修改a值再打印打印" << std::endl;

cout << iter->second.z << std::endl;

iter++;

}

cout << "++显示外部的a值" << std::endl;

cout << a1.z << std::endl;

system("pause");

 return 0;

}

aowiz576
2014-09-23 · TA获得超过113个赞
知道答主
回答量:258
采纳率:0%
帮助的人:112万
展开全部
呵呵,的确经常较为生硬的翻译工作。

图和前(向量,双端队列,列表)讨论序列集装箱船,因为有插入成员函数,并且角色也插入一个新元素的容器。

但是有一点要注意:按照排序键的键(key)的值的数据映射决定在容器中的元素的位置,因此,不需要再插入函数的参数,与像序列迭代器作为参数来指定位置插入一个容器,参数只需要指定要插入的元素。
地图容器中的每个元素是由一个关键的对两部分(键)和值(值)组成。地图插入功能有两个版本:插入一个元素,并插入一组元素。将参数插入所述一对中的一个元素类型的版本,将参数插入一组元素版本是一对指向开始位置和结束位置,以在该组中对被插入的迭代器。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
曹磊1231923
2021-04-06
知道答主
回答量:2
采纳率:0%
帮助的人:999
展开全部
拷贝 因为cla释放之后容器里边的对象还是存在的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式