以数组方式读取map元素的问题

zwyl2001 zwyl2001 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以数组方式读取map元素的时候,如果map的key中不存在指定的数据。会不会出现内存泄露之类的问题。和大家讨论一下。比如:
#include <iostream>
#include <map>
#include <string>
using namespace std;

struct MapData {
string data;
int index;
};

int main() {
map<string, MapData> dataMap;
char temp[5] = {0};
for(int i = 0; i < 10; i++) {
itoa(i, temp, 10);
MapData data;
data.data = "data" + string(temp);
data.index = i;
dataMap["data" + string(temp)] = data;
}

for(int i = 0; i < 20; i++) {
itoa(i, temp, 10);
//这段代码,已经调试通过。但是当i大于9时,下面这种写法会不会存在风险。希望大家踊跃讨论。
MapData data = dataMap["data" + string(temp)];
if (data.data == "") {
cout << "data not found: data" + string(temp) << endl;
} else {
cout << "data:" << data.data << "Index: " << data.index << endl;
}
}
}

C++的map以[]方式存取数据是以什么方式进行的。读取时,如果key不存在,有时一什么机制返回什么样的数据的?
...全文

相关推荐

评论 15
收藏 已收藏
分享
返回顶部
zwyl2001
C++ 语言 65,214 成员 250,514 内容