std::map<std::string,std::vector<std::string>> a라는 맵의 특정 키의 값이되는 벡터를 처음부터 끝까지 출력하기 위해서 다음과 같이 시도 했습니다


for(auto x=a.bigin();x!=a.end();x++)

{

if(!키 값과 동일한 값을 가지는 string변수.compare(x->first))


for(int i=0; i< x->second.size();i++)

{

printf("%s", x->second[i].c_str);

}


}


그리고 다음과같은 방법으로 백터에 새로운 문자열을 계속 추가 했습니다 //해당과정을 같은 key값에 2번반복했습니다



std::string b;

std::cin.ignore();

std::getline(cin,b);



for(auto x=a.bigin();x!=a.end();x++)

{

if(!키 값과 동일한 값을 가지는 string변수.compare(x->first))

{

x->second.push_back(b)

}

}

}

하지만 도무지 생각해도 왜 제대로 출력되는지 이해가 가질 않습니다

분명 x->second 라는 포인터형 매개 변수는 key값과 대응하는 vector를 가리킬것이고 해당 백터의 i번째 인덱스에 접근하기 위해서는 [i]를쓰는게 맞는데다가

.size() 함수는 vector의 크기를 가져오기 때문에 인덱스 끝까지 순회해야 하는데 그렇치 않네요

원인이 대체 뭘까요?