map的插入问题

typedef pair value_type;

value_type 被声明为 pair <const key_typemapped_type> 但并不是简单的 pair <key_type, mapped_type>因为用一个非常量的迭代器或引用不能改变关联容器的Key。

 

// map_value_type.cpp

// compile with: /EHsc

#include

#include

 

int main( )

{

using namespace std;

typedef pair cInt2Int;

map m1;

map :: key_type key1;

map :: mapped_type mapped1;

map :: value_type value1;

map :: iterator pIter;

 

// value_type can be used to pass the correct type

// explicitly to avoid implicit type conversion

m1.insert ( map :: value_type ( 1, 10 ) );

 

// Compare other ways to insert objects into a map

m1.insert ( cInt2Int ( 2, 20 ) );

m1[ 3 ] = 30;

 

// Initializing key1 and mapped1

key1 = ( m1.begin( ) -> first );

mapped1 = ( m1.begin( ) -> second );

 

cout << "The key of first element in the map is "

<< key1 << "." << endl;

 

cout << "The data value of first element in the map is "

<< mapped1 << "." << endl;

 

// The following line would cause an error because

// the value_type is not assignable

// value1 = cInt2Int ( 4, 40 );

 

cout << "The keys of the mapped elements are:";

for ( pIter = m1.begin( ) ; pIter != m1.end( ) ; pIter++ )

cout << " " << pIter -> first;

cout << "." << endl;

 

cout << "The values of the mapped elements are:";

for ( pIter = m1.begin( ) ; pIter != m1.end( ) ; pIter++ )

cout << " " << pIter -> second;

cout << "." << endl;

}

Output

The key of first element in the map is 1.

The data value of first element in the map is 10.

The keys of the mapped elements are: 1 2 3.

The values of the mapped elements are: 10 20 30.

猜你喜欢

转载自blog.csdn.net/mzr122/article/details/89918459