U E D R , A S I H C RSS

STL/Miscellaneous

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
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:27:57
Processing time 0.0177 sec