C++求兩數(shù)之和并返回下標(biāo)詳解_第1頁
C++求兩數(shù)之和并返回下標(biāo)詳解_第2頁
C++求兩數(shù)之和并返回下標(biāo)詳解_第3頁
C++求兩數(shù)之和并返回下標(biāo)詳解_第4頁
C++求兩數(shù)之和并返回下標(biāo)詳解_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第C++求兩數(shù)之和并返回下標(biāo)詳解合并兩個(gè)vector:合并nums1和nums2,并將合并后的數(shù)組賦值給nums

vectorintnums1(m),nums2(n);

vectorintnums;

nums.resize(m+n);

merge(nums1.begin(),nums1.end(),nums2.begin(),nums2.end(),nums);

方法二:

classSolution{

public:

vectorinttwoSum(vectorintnums,inttarget){

unordered_mapint,inthashtable;//建立哈希表

for(inti=0;inums.size();++i){//nums.size后面要帶括號()

//for(autoi:nums)錯誤,因?yàn)橹挥兄纈的類型才可以用auto

autoit=hashtable.find(target-nums[i]);//返回類型是iterator迭代器

if(it!=hashtable.end()){//查找it是否在hashtable里

return{it-second,i};//first是鍵(key),second是值(value)

//hashtable[nums[i]]=i,first就是nums[i],second就是i

hashtable[nums[i]]=i;//存入鍵值對。hashtable(nums[i])=i;錯誤,是[]不是()

return{};

auto的使用

C++11中引入的auto主要有兩種用途:自動類型推斷和返回值占位。

1.自動類型推斷

autoa;錯誤,沒有初始化表達(dá)式,無法推斷出a的類型

autointa=10;錯誤,auto臨時(shí)變量的語義在C++11中已不存在,這是舊標(biāo)準(zhǔn)的用法。

autoa=10;

autoc='A';

autos("hello");

2.返回值占位

autov=compose(2,3.14);v的類型是double

unordered_map

unordered_map的頭文件

#includeunordered_map

創(chuàng)建unordered_map容器:

unordered_mapstring,stringumap;

//創(chuàng)建好了一個(gè)可存儲string,string類型鍵值對的unordered_map容器

unordered_mapint,intumap;

//第一個(gè)int是鍵,第二個(gè)int是值

unordered_map容器的成員方法

begin()//返回指向容器中第一個(gè)鍵值對的正向迭代器。

end()//返回指向容器中最后一個(gè)鍵值對之后位置的正向迭代器。

find(key)//查找以key為鍵的鍵值對,如果找到,則返回一個(gè)指向該鍵值對的正向迭代器;反之,則返回一個(gè)指向容器中最后一個(gè)鍵值對之后位置的迭代器(如果end()方法返回的迭代器)。

cbegin()和begin()//功能相同,只不過在其基礎(chǔ)上增加了const屬性,即該方法返回的迭代器不能用于修改容器內(nèi)存儲的鍵值對。

cend()和end()//功能相同,只不過在其基礎(chǔ)上,增加了const屬性,即該方法返回的迭代器不能用于修改容器內(nèi)存儲的鍵值對。

empty()//若容器為空,則返回true;否則false。

size()//返回當(dāng)前容器中存有鍵值對的個(gè)數(shù)。

max_size()//返回容器所能容納鍵值對的最大個(gè)數(shù),不同的操作系統(tǒng),其返回值亦不相同。

operator[key]//該模板類中重載了[]運(yùn)算符,其功能是可以向訪問數(shù)組中元素那樣,只要給定某個(gè)鍵值對的鍵key,就可以獲取該鍵對應(yīng)的值。注意,如果當(dāng)前容器中沒有以key為鍵的鍵值對,則其會使用該鍵向當(dāng)前容器中插入一個(gè)新鍵值對。

at(key)//返回容器中存儲的鍵key對應(yīng)的值,如果key不存在,則會拋出out_of_range異常。

count(key)//在容器中查找以key鍵的鍵值對的個(gè)數(shù)。

equal_range(key)//返回一個(gè)pair對象,其包含2個(gè)迭代器,用于表明當(dāng)前容器中鍵為key的鍵值對所在的范圍。

emplace()//向容器中添加新鍵值對,效率比insert()方法高。

emplace_hint()//向容器中添加新鍵值對,效率比insert()方法高。

insert()//向容器中添加新鍵值對。

erase()//刪除指定鍵值對。

clear()//清空容器,即刪除容器中存儲的所有鍵值對。

swap()//交換2個(gè)unordered_map容器存儲的鍵值對,前提是必須保證這2個(gè)容器的類型完全相等。

bucket_count()//返回當(dāng)前容器底層存儲鍵值對時(shí),使用桶(一個(gè)線性鏈表代表一個(gè)桶)的數(shù)量。

max_bucket_count()//返回當(dāng)前系統(tǒng)中,unordered_map容器底層最多可以使用多少桶。

bucket_size(n)//返回第n個(gè)桶中存儲鍵值對的數(shù)量。

bucket(key)//返回以key為鍵的鍵值對所在桶的編號。

load_factor()//返回unordered_map容器中當(dāng)前的負(fù)載因子。負(fù)載因子,指的是的當(dāng)前容器中存儲鍵值對的數(shù)量(size())和使用桶數(shù)(bucket_count())的比值,即load_factor()=size()/bucket_count()。

max_load_factor()//返回或者設(shè)置當(dāng)前unordered_map容器的負(fù)載因子。

rehash(n)//將當(dāng)前容器底層使用桶的數(shù)量設(shè)置為n。

reserve()//將存儲桶的數(shù)量(也就是bucket_count()方法的返回值)設(shè)置為至少容納count個(gè)元(不超過最大負(fù)載因子)所需的數(shù)量,并重新整理容器。

hash_function()//返回當(dāng)前容器使用的哈希函數(shù)對象。

查找元素是否存在

若有unordered_mapint,int查找x是否在map中

方法1:若存在mp.find(x)!=mp.end()

方法2:若存在mp.count(x)!=0

c++中當(dāng)定義類對象是指針對象時(shí)候,就需要用到-指向類中的成員;

當(dāng)定義一般對象時(shí)候時(shí)就需要用到“.”指向類中的成員。

例如:

classA

publicplay();

如果定義如下:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論