vector의 end는 데이터를 추가적으로 삽입한 이후(push_back) 이전 end는 무효화가 되잖아?

반면 map은 end가 어느 시점에서의 end던 항상 컨테이너 요소의 끝이기에

이 부분에 대한 명확한 스펙이 있는지 궁금했어


이런 상황인 거지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vector<int> vec;
auto end0 = vec.end();
 
for(int i = 0; i != 100++i)
{
  vec.push_back(i);
}
 
auto end1 = vec.end();
 
if(end0 == end1)
{
  // 같지 않음!
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
    std::map<intint> dic;
    auto end0 = dic.end();
 
    for (int i = 0; i != 100++i)
    {
      dic.insert({ i, i });
    }
 
    auto end1 = dic.end();
 
    if (end0 == end1)
    {
      // 같음!
    }
cs


결론적으로 map과 같은 연관 컨테이너의 경우 어느 시점에서의 end던 항상 같은 end를 보장해. 

반복자도 어떤 시점에서든 제거가 되는 게 아닌 이상에야 항상 같은 곳을 가리키고 상관이 없고 ^^