분류 전체보기40 5일차 - range-based for loop Intro C++ 11으로 넘어오면서 다른 언어가 가진 foreach 개념이 C++에도 도입되었다.#include #include using namespace std;int main(int argc, char* argv[]){ int x[3] = { 1,2,3 }; vector v = { 1,2,3,4,5 }; // 기존(C++ 98)의 for loop for (int i=0; i동작 원리 위 예제에서 vector에 적용된 range-based for 문은 컴파일러에 의해 아래의 코드로 변환된다.for (auto p = begin(v); p != end(v); ++p){ auto n = *p; cout 즉, range-based for 문이 정상적으로 동작하려면.. 2015. 8. 11. 5일차 - begin & end Intro 임의의 타입 T의 객체들을 원소로 가지는 vector가 주어졌을 때, 이를 순회하면서 element들을 출력하는 함수를 작성해보자. 아마도 다음과 유사한 코드가 나올 것이다.#include #include using namespace std;template void Show (vector& v) { auto p = v.begin(); while (p != v.end()) { cout 여기서 Show 함수를 vector뿐만 아니라 모든 STL 컨테이너에 대해 적용되도록 바꾸려면 파라메터만 vector& v에서 T& c로 수정하면 된다. 이제 이 함수를 사용해보자.vector v = { 1,2,3,4,5 };int x[5] = { 1,2,3,4,5 };Show(v);.. 2015. 8. 10. CallStack을 찍어보자. Intro 커스텀 메모리 관리자에서는 일반적으로 디버깅을 용이하게 하기 위해 메모리 할당이 일어난 위치 정보를 메모리 헤더에 기록한다. 이는 예전 강좌 정리글에서도 한번 다뤘었다. 이러한 위치 정보 기록은 메모리 관련 뿐만 아니라 여러 곳에서 유용하게 쓰일 수 있다. 그런데 어떤 상황에서는 단순히 그 상황이 일어난 위치정보만으로는 문제 해결이 어려울 수 있다. 특히 문제가 되는 지점으로 진입할 수 있는 경로가 여러 개일 경우는 이것이 어떤 경로에서 발생한 문제인지 확인하기가 힘들다. 이때 만약 문제 시점의 콜스택을 확인할 수 있다면 이는 골치아픈 디버깅을 하는데 있어서 큰 도움이 될 것이다. Windows 프로그래밍에서는 이를 가능하게 하는 함수들을 제공하고 있는데, 이를 사용해서 콜 스택을 찍어보도.. 2015. 8. 7. 5일차 - initializer_list Intro initializer_list는 동일 타입의 요소를 여러 개 보관하는 타입(정확히는 템플릿)이다. 언뜻 생각해보면 이는 vector와 유사하며, interface도 큰 차이를 보이지 않는다. 차이점은 차후에 살펴보기로 하고, 우선 아래 코드를 통해 int 타입을 저장하는 initializer_list를 생성하고 사용하는 것을 살펴보자.#include using namespace std;int main(int argc, char* argv[]){ initializer_list e = { 1,2,3,4,5 }; cout ::iterator p = e.begin(); while (p != e.end()) { cout initializer_list와 함수인자 기존 C+.. 2015. 8. 5. 이전 1 2 3 4 5 6 7 8 ··· 10 다음