2009/09/27
map 에서의 원소 추가 및 접근 ( insert, find, operator[] )
stl 의 컨테이너 중 하나인 map 에는 원소의 추가와 접근 할 때 operator 에 의한 방법과 함수에 의한 방법이 있다.
이 두 가지 방법에는 차이가 있다.
존재하지 않는 키에 대한 접근이 일어날 경우 operator[]는 빈 객체를 만들어 생성여 반환을 하고 find 함수는 맵의 마지막 포인터를 반환한다.
operator[] 에 의한 키의 접근시 존재가 확실하지 않는 경우라면 예기치 않은 원소를 만들 수 있다.
Original Post : http://neodreamer-dev.tistory.com/328
이 두 가지 방법에는 차이가 있다.
존재하지 않는 키에 대한 접근이 일어날 경우 operator[]는 빈 객체를 만들어 생성여 반환을 하고 find 함수는 맵의 마지막 포인터를 반환한다.
operator[] 에 의한 키의 접근시 존재가 확실하지 않는 경우라면 예기치 않은 원소를 만들 수 있다.
std::map< int, std::string > alias;
// alias [0]()
// operator[]에 의한 데이터 추가
alias[ 1 ] = "cat";
// alias [1]((1,"cat"))
alias[ 2 ] = "dog";
// alias [2]((1,"cat"),(2,"dog"))
// insert 함수에 의한 추가
alias.insert( make_pair( 3, "bird" ) );
// alias [3]((1,"cat"),(2,"dog"),(3,"bird"))
alias.insert( make_pair( 4, "flog" ) );
// alias [4]((1,"cat"),(2,"dog"),(3,"bird"),(4,"flog"))
// operator[]에 의한 데이터 접근
std::string animal;
animal = alias[ 3 ];
// animal "bird"
animal = alias[ 5 ];
// alias [5]((1,"cat"),(2,"dog"),(3,"bird"),(4,"flog"),(5,""))
// animal ""
// find 함수에 의한 접근
std::map< int, std::string >::iterator itFind = alias.find( 2 );
// itFind (2,"dog")
if ( itFind != alias.end() )
{
animal = itFind->second;
// animal "dog"
}
itFind = alias.find( 6 );
// itFind (-842150451,<Bad Ptr>)
// alias [5]((1,"cat"),(2,"dog"),(3,"bird"),(4,"flog"),(5,""))
if ( itFind != alias.end() )
{
animal = itFind->second;
}
Original Post : http://neodreamer-dev.tistory.com/328
Labels:
C++
,
container
,
map
,
STL
,
TistoryOldPost
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment