STL中vector和map的查詢和刪除

2021-04-14 06:16:46 字數 1538 閱讀 7449

目前vector

和map

是stl

中最常用的兩個容器,在使用

vector

或map

時,根據需要會在容器中查詢,然後刪除,下面總結一下實際測試中正確的結果。

查詢:map的查詢可是使用

find

函式。map< int, cstring >::iterator iter;

iter = mapintstring.find( 1 );

if ( iter != mapintstring.end() )

而vector

中沒有find

函式,只能通過遍歷來查詢。

vectorvecnum;

for ( uint i = 0; i < vecnum.size(); i++ )

刪除:vector

刪除,如果不使用迭代器,可直接刪除。

vector< int > m_vecnum;

m_vecnum.push_back( 1 );

m_vecnum.push_back( 2 );

m_vecnum.push_back( 3 );

for ( uint i = 0; i < m_vecnum.size(); i++ )

}int num = m_vecnum[i];

結果num的值為2。

map刪除,

map必須使用迭代器,刪除的時候涉及到迭代器指標的問題。

例如:

map< int, cstring > mapintstring;

cstring strtext;

strtext.format( "string1" );

mapintstring.insert( make_pair( 1, strtext ) );

strtext.format( "string2" );

mapintstring.insert( make_pair( 2, strtext ) );

strtext.format( "string3" );

mapintstring.insert( make_pair( 3, strtext ) );

map< int, cstring >::iterator iter;

iter = mapintstring.find( 1 );

if ( iter != mapintstring.end() )

int num = iter->first;

這種情況下,

iter

指的位址已經刪除,所以最後

num沒有值。

正確的方法如下:

map< int, cstring >::iterator iter;

map< int, cstring >::iterator iterdel;

iter = mapintstring.find( 1 );

if ( iter != mapintstring.end() )

int num = iter->first;

此時的值正確,

num為2。

STL中map 和vector巢狀使用示例

pragma warning disable 4786 include include include include include using namespace std typedef mapstring2string typedef std map string2vector int mai...

STL中map和priority queue的應用

基本的知識就不再講了,只列下用map做的題目 題1 poj 1002 487 3279 這個題目煩的死,tle了n次,只是因為我用g 提交的,好啦,要注意的就是把陣列開大點,和用c語言輸入,最後如果沒有重複的 號碼輸出 no duplicates.include include include in...

STL中的map和multimap小結

1 使用map multimap之前必須包含標頭檔案 include並且和所有的關聯式容器一樣,map multimap通常以平衡二叉樹來完成 2 namespacestd 第乙個template引數被當作元素的key,第二個當作元素的value。key value必須具備assignable和co...