最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++ map索引不存在的key可能導(dǎo)致的后果分析

 更新時(shí)間:2020年12月14日 16:46:19   作者:魚竿釣魚干  
這篇文章主要介紹了c++ map索引不存在的key可能導(dǎo)致的后果分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

今天調(diào)這個(gè)調(diào)了很久才發(fā)現(xiàn)這個(gè)問題,所以記錄以下
測(cè)試代碼

#include<bits/stdc++.h>
using namespace std;

int main()
{
	map<int,int>mp_int;
	map<string,string>mp_string;
	map<char,char>mp_char;
	mp_int[1]=10;
	string a="abc",b="xzy",c="def";
	mp_string[a]=b;
	mp_char['a']='b';
	cout<<"正常索引"<<endl; 
	for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl;
	
	cout<<"訪問不存在的鍵"<<endl;
	cout<<mp_int[2]<<endl<<mp_string[c]<<endl<<mp_char['c']<<endl;
	
	cout<<"變化"<<endl;
	for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl;
	
	return 0;
}

OUT PUT

正常索引
1 10
abc xzy
a b
訪問不存在的鍵
0
變化
1 10
2 0
abc xzy
def
a b
c

可以發(fā)現(xiàn)不存在的key在被索引后被添加到了map中并被賦予了一個(gè)默認(rèn)值(一般的,整數(shù)為0,字符,字符串為空)

需要注意的是,只要發(fā)生了索引,就會(huì)導(dǎo)致如上錯(cuò)誤,即使他們?cè)趇f語句里

#include<bits/stdc++.h>
using namespace std;

int main()
{
	map<int,int>mp_int;
	map<string,string>mp_string;
	map<char,char>mp_char;
	mp_int[1]=10;
	string a="abc",b="xzy",c="def";
	mp_string[a]=b;
	mp_char['a']='b';
	cout<<"正常索引"<<endl; 
	for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl;
	
	cout<<"訪問不存在的鍵"<<endl;
	if(mp_int[2]);
	if(mp_string[c]==a);
	if(mp_char['c']);
	
	cout<<"變化"<<endl;
	for(auto &i:mp_int)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_string)cout<<i.first<<" "<<i.second<<endl;
	for(auto &i:mp_char)cout<<i.first<<" "<<i.second<<endl;
	
	return 0;
}

上面的代碼會(huì)產(chǎn)生同樣的結(jié)果

當(dāng)你想要再次使用(循環(huán))這些鍵的時(shí)候就會(huì)出錯(cuò),你會(huì)使用到實(shí)際并不存在的key

避免方法是在索引前使用find或者count來判斷鍵是否存在

到此這篇關(guān)于c++ map索引不存在的key可能導(dǎo)致的后果分析的文章就介紹到這了,更多相關(guān)c++ map索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言版實(shí)現(xiàn)三子棋游戲

    C語言版實(shí)現(xiàn)三子棋游戲

    這篇文章主要為大家詳細(xì)介紹了C語言版實(shí)現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C/C++ Qt ToolBar菜單組件的具體使用

    C/C++ Qt ToolBar菜單組件的具體使用

    ToolBar工具欄在所有窗體應(yīng)用程序中都廣泛被使用,使用ToolBar可以很好的規(guī)范菜單功能分類,本文就詳細(xì)的介紹一下ToolBar組件的應(yīng)用,感興趣的可以了解一下
    2021-11-11
  • 一問學(xué)會(huì)QT時(shí)間類

    一問學(xué)會(huì)QT時(shí)間類

    QT獲取時(shí)間的類有3個(gè),分別是QDate、QTime、QDateTime,他們屬于QT的network模塊。本文詳細(xì)的介紹了這3個(gè)模塊的使用,感興趣的可以了解一下
    2023-04-04
  • QT移植到RK3568開發(fā)板的方法步驟

    QT移植到RK3568開發(fā)板的方法步驟

    本文主要介紹了QT移植到RK3568開發(fā)板的方法步驟,文中通過圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • C語言實(shí)現(xiàn)單詞小助手改進(jìn)版

    C語言實(shí)現(xiàn)單詞小助手改進(jìn)版

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)單詞小助手的改進(jìn)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++模擬實(shí)現(xiàn)STL容器vector的示例代碼

    C++模擬實(shí)現(xiàn)STL容器vector的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C++如何模擬實(shí)現(xiàn)STL容器vector的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-11-11
  • 矩陣的行主序與列主序的分析

    矩陣的行主序與列主序的分析

    這篇文章主要介紹了矩陣的行主序與列主序的分析的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++ 智能指針代碼解析

    C++ 智能指針代碼解析

    這篇文章主要介紹了c++ 智能指針基礎(chǔ)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下,希望能給你帶來幫助
    2021-10-10
  • 詳解C++編程中斷言static_assert的使用

    詳解C++編程中斷言static_assert的使用

    這篇文章主要介紹了C++編程中斷言static_assert的使用,斷言在debug時(shí)非常有用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-01-01
  • Qt sender()函數(shù)的具體使用

    Qt sender()函數(shù)的具體使用

    在處理信號(hào)時(shí),Qt提供了一個(gè)特殊的函數(shù)sender(),可以返回發(fā)送信號(hào)的對(duì)象指針,以實(shí)現(xiàn)更靈活的代碼邏輯,本文就來介紹一下Qt sender()函數(shù)的具體使用,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

建平县| 扬中市| 昭平县| 嘉峪关市| 涟源市| 海宁市| 茂名市| 博爱县| 淮北市| 建昌县| 紫云| 许昌县| 岢岚县| 卢氏县| 定边县| 金湖县| 顺平县| 红原县| 财经| 华池县| 文山县| 虹口区| 岚皋县| 永靖县| 鄂尔多斯市| 黑山县| 长治县| 开化县| 烟台市| 靖安县| 张家界市| 北海市| 上杭县| 嘉兴市| 姜堰市| 乌海市| 行唐县| 军事| 大足县| 鹿泉市| 乐都县|