만해 님이 쓰신 글 :
: 김백일 님이 쓰신 글 :
: : 만해 님이 쓰신 글 :
: : :
: : : 참 제가 STL을 좀 해야 할것 같은데 책 좋은거 없나요?
: :
: : 제가 갖고 있는 걸 들어보자면,
: :
: : Designing Components with the C++ STL, by Ulrich Breymann
: :
http://cseng.aw.com/book/0,3828,0201674882,00.html
: :
: : STL Tutorial and Reference Guide, Second Edition by David R. Musser, Gillmer J. Derge, Atul Saini
: :
http://cseng.aw.com/book/0,,0201379236,00.html
: : 인포북에서 아래 사이트(
http://oopsla.snu.ac.kr/~sjjung/stl)의 관리자인 정승진氏가 '표준 템플릿 라이브러리와 함께하는 C++ 프로그래밍'이란 제목으로 이 달이나 다음 달내로 번역되어 나올 예정입니다.
: :
: : Effective STL, By Scott Meyers ("Effective C++" 시리즈로 유명한 사람이죠.)
: :
http://cseng.aw.com/book/0,3828,0201749629,00.html
: : 역시 인포북에서 '이펙티브 STL'이란 이름으로 번역되어 나왔습니다.
: : 저희 연구실(
http://nlp.korea.ac.kr) 박사과정이신 곽용재(yjkwak@nlp.korea.ac.kr,
http://www.kwak101.pe.kr) 형께서 번역하셨습니다. 문체가 참 재밌습니다. ^_^
: :
: : : 아니면 사이트나 EBook라도 없나요 ?
: : :
: : :
http://oopsla.snu.ac.kr/~sjjung/stl <- 여기에 상당히 많은 글이 있는데
: : 위 사이트 자료도 매우 좋습니다.
: : Webzip 같은 걸로 전부 긁어서 프린트해서 보셔도 좋을 겁니다.
: :
: : : 조금 부족한것 같아서요
: : :
: : : 기냥 AVL 트리를 구현 할까 쩝~
: :
: : 참고로 STL의 map은 balanced binary search tree의 일종인 red-black tree로 구현되어 있습니다.
:
: 위의 두분의 답변에 감사 드리고요
:
: 아직 짧디 짧은 제 영어 실력으로는
:
: 김백일님께서 애기 하신 번역서를 기다리는게 좋을것 같네요
:
: 하지만 프로그램에 로직은 지금 바꿔야 하는데
:
: 어떻게 하지 쩝~
:
: 참 Effective STL은 지난주 토욜날 설에 있으면서
:
: 이전에 천랸 모임때 임프님께서 알려준 강남의 전산 전문 서점에서 구입 했습니다.
위에 썼듯이 '이펙티브 STL' 한글판은 인포북에서 1월 18일에 발행했습니다.(\18,000)
한글판을 사실 수 있으셨을텐데요?
: Effective C++ , Effective STL 두권 가지고 있는데요
:
: 아직 제가 실력이 모자라서 잘은 모르겠네요
:
: 제가 오늘 내내 사이트(
http://oopsla.snu.ac.kr/~sjjung/stl)에서 본걸로는
:
: 제가 구현 해야할 컨테이너는 Map 같네요
:
: 지금 빌더의 예제 디렉토리 밑에 있는 StdApp의 소스를 열심히 보고 있습니다.
:
: 혹 그외에 좋은 예제 있음 추천 부탁 드릴께요
한가지 예제를 들어 드리죠.
다음 코드는 텍스트 파일안의 각 단어별 빈도(출현 회수)를 세는 프로그램입니다.
이 정도만 이해하실 수 있으면 map을 쓰시는 데는 무리가 없을 겁니다.
//---------------------------------------------------------------------------
// wordfreq.cpp
//---------------------------------------------------------------------------
#include <fstream>
#include <cstdlib>
#pragma hdrstop
#include <string>
#include <map>
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int main(int argc, char* argv[])
{
if (argc < 3) {
cerr << "usage: wordfreq corpusfile freqfile\n";
exit(1);
}
ifstream fin(argv[1]);
ofstream fout(argv[2]);
// <키 값, 빈도>
map<string, int> freq;
string word;
while (fin >> word)
// freq에 word가 있으면 1만큼 증가, 없으면 새로 추가하고 빈도를 1로 세팅.
freq[word] = freq.count(word) ? freq[word] + 1 : 1;
for (map<string, int>::iterator i = freq.begin(); i != freq.end(); i++)
fout << i->first << '\t' << i->second << '\t' // 결과는 word순으로 정렬됨.
return 0;
}