miscellaneous : <사물 등이> 형형색색의 (것으로 이루어진), 갖가지 잡다한, 잡동사니의
특별히 위치할 곳이 없는 정보들의 페이지. 쌓여서 분리됩니다.
----
원하는 값 삭제하기 ¶
- 어떤 컨테이너가 int값들을 담고 있다고 하자. 거기서 1982 라는 숫자를 몽땅 지워주고 싶다면?
- Contiguous-memory container 일때
~cpp
c.erase( remove(c.begin(), c.end(), 1982), c.end() ); // 이건 내부적으로 어떻게 돌아가는 걸까. 찾아봐야겠군.
- list일때 - erase 써도 되지만 remove가 더 효율적이다.
~cpp
c.remove(1982);
- Associative container 일때 - remove쓰면 난리난다.(없으니깐--;) 또 제네릭 알고리즘 remove도 역시 안된다. 컨테이너가 망가질수도 있다.
~cpp
c.erase(1982);
파일 읽어 오기 ¶
~cpp
// ints.dat 에서 정수들을 읽어와 list에 저장해줌
ifstream dataFile("ints.dat");
ifstream_iterator<int> dataBegin(dataFile);
ifstream_iterator<int> dataEnd;
list<int> data(dataBegin, dataEnd); // 요런식으로 써주자.
주의사항 ¶
- 컨테이너를 아무거나 쓰면 안된다. 가장 최적화된 자료구조를 생각해서 써야한다.
- vector<Object*> 이런식으로 동적 생성하는 객체의 레퍼런스를 위한 포인터를 컨테이너에 넣을때는 추후 포인터가 가리키는 객체를 직접 delete 해줘야 한다.
----
STL