2014-07-08 3 views
3

정수 컨테이너를 파일에서 읽는 코드를 리팩토링하고 있습니다. 나는이 같은 스트림 추출기에 공통 코드를 이동 한 :연산자 >> 컨테이너를 지워야하나요?

std::istream &operator>>(std::istream &in, std::vector<int> &list); 
std::istream &operator>>(std::istream &in, std::map<int, std::vector<int>> &graph); 

내 질문이 기능을 쓰기 전에 용기를 취소하거나 삽입/그들에 데이터를 추가할지 여부입니다. (내 특별한 경우에는 문제가되지 않지만 코드 재사용을 위해 알고 싶습니다.)

이러한 상황에 대한 C++ 규칙이 있습니까? 나는 Least Surprise 원칙에 따라 코드를 작성하려고합니다.

+0

이 컨테이너는 이전에 다른 곳에서 사용 되었습니까? 그렇다면 아마 그들은 삭제되어야합니다. – 101010

+0

아니요, 아무 것도 없습니다 - 내 것이 추가됩니다 –

+0

제 의견으로는 컨테이너에 보존되기를 원하는 데이터를 삭제하지 않았다면 발신자에게 가장 놀랄만 한 일이라고 생각합니다. – Praetorian

답변

6

표준 라이브러리에서 제공하는 추출 연산자는 모두 이며 대상 변수의 내용은으로 바뀝니다.

예를 들어 컨테이너 유형 인 std::string을 포함합니다.

+0

이것은 정확히 내가 생각한 것입니다. 그러나 단순한 데이터 유형에만 적용되는지 확실하지 않았습니다. 나는 끈에 대해 잊었다. – QuasarDonkey