[태그:] STL
accumulate()
기본적으로, 컨테이너의 요소들을 세 번째 인수로 지정한 초기값에 모두 더합니다. 기본 덧셈을 오버라이딩하기 위해 이항 연산을 넘길 수 있습니다.
#include <numeric> iresult = accumulate(ia, ia + 9, 0); iresult = accumulate(ilist.begin(), ilist.end(), 0, plus<int>());
adjacent_difference()
기본적으로 주어진 열 내에서 인접하는 각 요소의 차이를 값으로 하는 새로운 열을 생성합니다. {0, 1, 1, 2, 3, 5, 8}이 주어진다면 그 결과는 {0, 1, 0, 1, 1, 2, 3}이 됩니다. 기본 뺄셈을 오버라이딩하는 이항 연산을 넘길 수 있습니다. 예를 들면, times<int>는 {0, 0, 1, 2, 6, 15, 40}이라는 결과를 도출합니다. 세 번째 인수는 결과가 복사될 컨테이너를 가리키는 반복자입니다.
#include <numeric> adjacent_difference(ilist.begin(), ilist.end(), iresult.begin());…
inline void string_split(const std::string& c_st_parent, const std::string& c_st_sep, std::vector<std>* pvec_st_child) { string::size_type base = 0; string::size_type end = 0; string::size_type sep_len = c_st_sep.length(); pvec_st_child->clear(); /* pvec_st_child->reserve(16); 적당한 크기로 공간을 예약해 주면 좋겠죠 : ) */ while ( (end = c_st_parent.find_first_of(c_st_sep, base)) >= 0) { pvec_st_child->push_back(c_st_parent.substr(base, end - base)); base = end + sep_len; } pvec_st_child->push_back(c_st_parent.substr(base, end - base)); }
이 후 부터는 VC6 이 “C:\Program Files\Microsoft Visual Studio” 에 설치되었다고 가정합니다. 따라서 MSDEV.exe 파일은 “C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin” 에 위치하게 됩니다.
VC6의 MSDEV.exe 파일이 있는 폴더에는 AUTOEXP.dat 란 파일이 존재합니다.
AUTOEXP.dat 파일은 툴팁에서나 디버그 Watch 창에서 해당 변수의 내용을 어떻게 표시할 지를 사용자가 결정할 수 있게 해줍니다.
간단하게 예를 들어서 MFC의 CPoint 형 변수를 디버그 Watch 창에 추가하면 오른쪽에 결과로 “{x=100 y=200}” 과 같은 형식으로 표시가 됩니다. 또는 디버깅 시 해당 변수위에 마우스 커서를 올려놓고 잠시 기다리면 나오는 툴팁에서도 똑같은 결과가 표시됩니다.
AUTOEXP.dat 파일을 열어보면 기본적으로 ” CPoint =x=<x> y=<y> ” 라는 아이템이 있습니다. 즉
… STL 를 사용하다보면 어려운 점 중에 하나가 그 내용을 확인하기가 쉽지 않다는 점입니다. 배열을 사용하면 디버그 watch 창에 그 내용물이 보기 쉽게 표시되는데 배열의 STL 대응인 std::vector 를 사용하면 무슨 내용이 vector 저장되어 있는지 디버깅 시 확인하기가 쉽지 않습니다. 다음과 같이 watch 창에 입력하면 std::vector 의 내용을 확인할 수 있습니다.
01: /* testWatch.cpp : Defines the entry point for the console application. */ 02: 03: 04: #include "stdafx.h" 05: #include <vector> 06: #include <string> 07: 08: struct Student 09: { 10: std::string name; 11: int id; 12: 13: Student(const std::string & _name, const int & _id) : name(_name), id(_id) {…