C++关于map的插入 删除
来源:互联网 发布:win7动态桌面壁纸软件 编辑:程序博客网 时间:2024/06/08 16:12
void testInsert()
{
map<int,string> mapData;
// 插入元素
pair<map<int,string>::iterator, bool> rt1;
pair<map<int,string>::iterator, bool> rt2;
pair<map<int,string>::iterator, bool> rt3;
pair<map<int,string>::iterator, bool> rt4;
// insert 插入
rt1 = mapData.insert(pair<int,string>(1, "test1"));
rt2 = mapData.insert(map<int,string>::value_type(2, "test2"));
rt3 = mapData.insert(make_pair(3, "test3"));
rt4 = mapData.insert(make_pair(3, "test33"));
// 数组插入
mapData[5] = "test5";
mapData[5] = "test55";
cout << "rt1 = " << rt1.second << " ";
cout << "rt2 = " << rt2.second << " ";
cout << "rt3 = " << rt3.second << " ";
cout << "rt4 = " << rt4.second << endl;
map<int,string>::iterator it = mapData.begin();
while (it != mapData.end())
{
cout << it->second << endl;
++it;
}
// 输出结果为// rt1 = 1 rt2 = 1 rt3 = 1 rt4 = 0
// test1
// test2
// test3
// test55
// insert插入数据时,如果key值存在,插入失败,不修改key值对应的value值,否则插入成功
// 数组方式插入 如果当前key值存在修改当前key对应的value值,否则插入
}
void testDelete()
{
map<int,string> mapData;
mapData.insert(make_pair(1, "test1"));
mapData.insert(make_pair(2, "test2"));
mapData.insert(make_pair(3, "test3"));
mapData.insert(make_pair(4, "test4"));
mapData.insert(make_pair(5, "test5"));
// mapData数据为(1,"test1") (2,"test2") (3,"test3") (4,"test4") (5,"test5")
// 遍历删除
// 错误1//
// for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); ++it)
// {
// if (it->first % 2 == 0)
// {
// mapData.erase(it); // 错误原因:it指针在元素被删除后失效了
// }
// }
// 正确方法1
for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); /*++it*/)
{
if (it->first % 2 == 0)
{
mapData.erase(it++);
// it++ // 操作流程
// _Myiter operator++(int)
// {
// postincrement
// _Myiter _Tmp = *this;
// 备份
// ++*this;
// +1
// return (_Tmp);
// 返回备份
// }
}
else
{
++it;
}
}
// mapData数据为(1,"test1") (3,"test3")(5,"test5")
mapData.insert(make_pair(2, "test2"));mapData.insert(make_pair(4, "test4"));
// 正确方法2
for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); /*++it*/)
{
if (it->first % 2 == 0)
{
it = mapData.erase(it);
}
else
{
++it;
}
}
// mapData数据为(1,"test1") (3,"test3")(5,"test5")
mapData.insert(make_pair(2, "test2"));
mapData.insert(make_pair(4, "test4"));
// 正确方法3
for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); /*++it*/)
{
if (it->first % 2 == 0)
{
map<int,string>::iterator itTmp = it;
++it;
mapData.erase(itTmp);
}
else
{
++it;
}
}
// mapData数据为(1,"test1") (3,"test3")(5,"test5")
// iterator erase(const_iterator _First, const_iterator _Last)
mapData.insert(make_pair(2, "test2"));
mapData.insert(make_pair(4, "test4"));
map<int,string>::iterator it = mapData.begin();
++it;
++it;
mapData.erase(mapData.begin(), it);
// mapData数据为(3,"test3") (4,"test4")(5,"test5")
mapData.insert(make_pair(1, "test1"));
mapData.insert(make_pair(2, "test2"));
// size_type erase(const key_type& _Keyval)
// 删除key值为3的项
mapData.erase(3);
// mapData数据为(1,"test1")(2,"test2") (4,"test4")(5,"test5")
}
{
map<int,string> mapData;
// 插入元素
pair<map<int,string>::iterator, bool> rt1;
pair<map<int,string>::iterator, bool> rt2;
pair<map<int,string>::iterator, bool> rt3;
pair<map<int,string>::iterator, bool> rt4;
// insert 插入
rt1 = mapData.insert(pair<int,string>(1, "test1"));
rt2 = mapData.insert(map<int,string>::value_type(2, "test2"));
rt3 = mapData.insert(make_pair(3, "test3"));
rt4 = mapData.insert(make_pair(3, "test33"));
// 数组插入
mapData[5] = "test5";
mapData[5] = "test55";
cout << "rt1 = " << rt1.second << " ";
cout << "rt2 = " << rt2.second << " ";
cout << "rt3 = " << rt3.second << " ";
cout << "rt4 = " << rt4.second << endl;
map<int,string>::iterator it = mapData.begin();
while (it != mapData.end())
{
cout << it->second << endl;
++it;
}
// 输出结果为// rt1 = 1 rt2 = 1 rt3 = 1 rt4 = 0
// test1
// test2
// test3
// test55
// insert插入数据时,如果key值存在,插入失败,不修改key值对应的value值,否则插入成功
// 数组方式插入 如果当前key值存在修改当前key对应的value值,否则插入
}
void testDelete()
{
map<int,string> mapData;
mapData.insert(make_pair(1, "test1"));
mapData.insert(make_pair(2, "test2"));
mapData.insert(make_pair(3, "test3"));
mapData.insert(make_pair(4, "test4"));
mapData.insert(make_pair(5, "test5"));
// mapData数据为(1,"test1") (2,"test2") (3,"test3") (4,"test4") (5,"test5")
// 遍历删除
// 错误1//
// for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); ++it)
// {
// if (it->first % 2 == 0)
// {
// mapData.erase(it); // 错误原因:it指针在元素被删除后失效了
// }
// }
// 正确方法1
for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); /*++it*/)
{
if (it->first % 2 == 0)
{
mapData.erase(it++);
// it++ // 操作流程
// _Myiter operator++(int)
// {
// postincrement
// _Myiter _Tmp = *this;
// 备份
// ++*this;
// +1
// return (_Tmp);
// 返回备份
// }
}
else
{
++it;
}
}
// mapData数据为(1,"test1") (3,"test3")(5,"test5")
mapData.insert(make_pair(2, "test2"));mapData.insert(make_pair(4, "test4"));
// 正确方法2
for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); /*++it*/)
{
if (it->first % 2 == 0)
{
it = mapData.erase(it);
}
else
{
++it;
}
}
// mapData数据为(1,"test1") (3,"test3")(5,"test5")
mapData.insert(make_pair(2, "test2"));
mapData.insert(make_pair(4, "test4"));
// 正确方法3
for (map<int,string>::iterator it = mapData.begin(); it != mapData.end(); /*++it*/)
{
if (it->first % 2 == 0)
{
map<int,string>::iterator itTmp = it;
++it;
mapData.erase(itTmp);
}
else
{
++it;
}
}
// mapData数据为(1,"test1") (3,"test3")(5,"test5")
// iterator erase(const_iterator _First, const_iterator _Last)
mapData.insert(make_pair(2, "test2"));
mapData.insert(make_pair(4, "test4"));
map<int,string>::iterator it = mapData.begin();
++it;
++it;
mapData.erase(mapData.begin(), it);
// mapData数据为(3,"test3") (4,"test4")(5,"test5")
mapData.insert(make_pair(1, "test1"));
mapData.insert(make_pair(2, "test2"));
// size_type erase(const key_type& _Keyval)
// 删除key值为3的项
mapData.erase(3);
// mapData数据为(1,"test1")(2,"test2") (4,"test4")(5,"test5")
}
阅读全文
0 0
- C++关于map的插入 删除
- C++:map中数据的插入和删除
- std::map 的删除和插入效率
- 关于map的遍历 删除
- 关于Map数据插入读取的问题
- 关于c语言编写 顺序表 的创建、插入、修改、删除、显示、退出 的程序案例
- c++ 关于map的遍历 删除
- c++ 关于map的遍历 删除
- c++ 关于map的遍历 删除
- 关于容器Map删除元素的常见问题
- 关于红黑树的插入和删除
- 关于BST的插入,查找和删除
- vector/list/map/set的插入、删除、遍历
- C++ STL Map的创建、删除、插入、更新、遍历
- C++:在迭代中删除map的成员
- C++:在迭代中删除map的成员
- 单链表的插入和删除(C++)
- c语言 单链表的插入与删除
- 数学建模专栏 | 第十篇:MATLAB CUMCM真题求解实例一:数据型
- Saruman's Army
- 2017秋季 超星尔雅舌尖上的植物学答案
- SpringCloud Config-----1、搭建分布式配置中心
- Java环境配置--只需一步
- C++关于map的插入 删除
- 关于一道编程题,重拾起编程
- fckEditor的使用以及图片上传不显示解决
- 4.35 leetcode -35 binary-tree-inorder-traversal
- 饿了么,美团外卖用一台打印机自动接单打印外卖订单小票(教程)
- jQuery.extend 函数使用详解
- Vue, App与我(十)
- 9.9 买礼物的艰辛 2719
- jq 显示json 值,jq 判断浏览器类型