c++中vector<int>和vector<int*>的用法及區(qū)別
在使用STL容器(比如map、list、vector等)的時候,是用放一個對象還是放一個對象指針,即是用vector<int>還是vector<int*>,這里的vector可以換成其他的容器,int可以換成其他基本類型,也可以自定義的數(shù)據(jù)結(jié)構(gòu)或類。
首先,要說明的是,這兩種方式,怎么用都可以實現(xiàn)功能,把一組整型數(shù)放到容器里。先看看兩種方式在使用的時候的區(qū)別。
1.vector<int>
vector<int> vecTemp;
for (int i=0; i< 10; i++)
{
?? ?vecTemp.push_back(i);
}這種方式不需要動態(tài)new內(nèi)存,當(dāng)然也不用delete。
2.vector<int*>
vector<int*> vecTemp;
for (int i=0; i< 10; i++)
{
?? ?int* nTemp = new int;
?? ?nTemp = &i;
?? ?vecTemp.push_back(i);
}這種方式采用new,當(dāng)然也要用delete:
std::vector<int*>::iterator Iter;
for(Iter=vecTemp.begin(); Iter!=vecTemp.end(); Iter++)
{
?? ?int* temp = *Iter;
?? ?
?? ?delete temp;
?? ?temp = NULL;
}3.兩種用法的區(qū)別
1)vector<int>不需要動態(tài)操作內(nèi)存,不用擔(dān)心內(nèi)存泄露等問題;vector<int*>要注意new和delete成對使用。
2)當(dāng)int改變成其他類型或結(jié)構(gòu)或類的時候,用vector<int*>這種方式比較方便,容器里放的內(nèi)容占用的內(nèi)存也相對要少一些,指針在用的時候,去申請空間,不用,那就是個占用4個字節(jié)的地址。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Qt?關(guān)于容器的遍歷迭代器的使用問題小結(jié)
Qt是一個跨平臺的 C++ 開發(fā)庫,主要用來開發(fā)圖形用戶界面程序,當(dāng)然也可以開發(fā)不帶界面的命令行程序,本文重點給大家介紹Qt?關(guān)于容器的遍歷迭代器的使用問題小結(jié),感興趣的朋友一起看看吧2022-03-03
詳解如何使用VSCode和CMake構(gòu)建跨平臺的C/C++開發(fā)環(huán)境
本文主要介紹了如何使用VSCode和CMake構(gòu)建跨平臺的C/C++開發(fā)環(huán)境,想進行跨平臺開發(fā)的同學(xué)們,一定要看一下2021-06-06
全局變量與局部變量在內(nèi)存中的區(qū)別詳細(xì)解析
以下是對全局變量與局部變量在內(nèi)存中的區(qū)別進行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
C語言lidar_align雷達(dá)里程計校準(zhǔn)功能詳解
這篇文章主要為大家介紹了C語言lidar_align雷達(dá)里程計校準(zhǔn)功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03

