제일 많이 사용 하는 STL 컨테이너 중 하나를 고르라고 하면 단연, vector가 아닐까 한다. 이 vector의 사용 법에 대해서 질문을 하려 한다. 1. vector v가 주어졌다고 할 때, 아래의 줄 A와 B의 차이는 무엇인가? #include #include #include using namespace std; void f( vector& v ) { v[0];// A v.at( 0 ); } A 는 범위 점검을 하여 벡터의 내부 요소에 접근 할 "수" 있다. B 는 무조건 범위를 점검하여 벡터의 내부 요소에 접근 한다. 이 두 차이로 인하여, 무엇이 안정적인지 알 수 있을 것이다. 하지만, 안전적인게 B 방법이라 할지라도, 성능상의 이류로 A를 사용 하기도 한다. iterator 를 사용 하여....
vector 검색 결과
바로 질문 들어가자. 1. 표준 라이브러리에서 vector와 deque는 유사한 기능을 한다. 그렇다면 둘 중 어떤 컨테이너를 써야 할까? 이유는? 둘 중 하나를 골라서 써야 하는 상황은? 음.. 그림으로 표시 바로.. 출처는 http://www.cplusplus.com/reference/stl/ 이다 2. 다음 코드는 어떤 결과를 보여 주나? #include std::vector c ( 10000 ); c.erase( c.begin() + 10, c.end() ); c.reserve( 10 ); 풀이를 하자면 C를 초기에 10000까지 늘리고, 10개 후부터 끝까지 지운 후에 공간을 10으로 만든다. 하지만.. 실제 공간이 10으로 줄여주는것이 아니므로, 줄여주기 위한 목적이라면 resize( 10 )..
내가 STL에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve STL 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. - 최익필 이제부터 알고리즘(Algorithm)에 대해서 효율적인 사용 방법에 대해서 이야기 한다. STL 에 있어 알고리즘은 .. Containers 만큼이나 중요하다. 기본 제공되는것만도 100가지가 남지만, 이중 제일 많이 쓰이는 부분과 좋은 알고리즘(Algorithm)이지만 소개받지 못했던 부분에 대해서 이야기 한다고 하니, 눈 딱 크게 뜨고, 봐야 할 것같다. 이번 항목의 주제는 "알고리즘을 이용하여 데이터를 넣을 때, 컨테이너의 공간을 크게 잡고 넣는게 ..
"좋을 때가 있다" 이런 문구가 들어가면, 조금 복잡해 지는 경향이 없지 않아 있다. 왜냐하면, 경우에 따라서 달라지는 상황에 대해서 판단을 내려야 하기 때문이다. 제목을 다시 정리하지만 "연관 컨테이너(Associative Containers)보다 연속 컨테이너(Sequence Containers)의 vector가 더 좋다는 이야기가 아니라, ... vector가 더 좋을 수도 있다"는 이야기로 이번 항목은 시작 되었다. 연관 컨테이너(Associative Containers)는 탐색에 특화된 컨테이너라 할 수 있는데, 이 탐색이란 것은 "C 배우는 알고리즘"에서 나와 있는 비슷한 방법으로 행해지게 된다. 구체적인 내용은 정리 글의 범주에서 벗어 나므로 생략하고, 구글에서 "균형 이진 트리" 라고 구글..
vector에, bool을 넣어 사용하지 말라는 뜻으로 이해 하고 넘어가도 되는 장이지만, 왜 그런지 알아둘 필요가 있기에 간략한 설명을 한다. 설명에 들어가기 앞서, 코드를 포함하여, 설명을 한다. #include #include int main(void) { std::vector Dst;// Dst 생성 Dst.push_back(1);// 참값 넣음 Dst.push_back(1);// 참값 넣음 Dst.push_back(0);// 참값 넣음 bool pb = Dst[0];// .. 이건 되지만 bool *pbb = &Dst[0];// .. 이건 되지 않는다, 컴파일 해 보면 알수 있다. } 여기서 보았을때 bool 은 정상적으로 작동이 되지 않을것이며, 맨 끝에 라인에서 컴파일 타임 에러가 날 것이다..
이번 항목은 swap 에 대한 기본 지식이 필요로 한다. swap 에 관련된 Effective C++ 25항목 참조 하면 좋을듯 싶고, 형변환은 그 객체의 사본을 만든다는 것도 알아두면 이번장도 어려운것은 없다. #include int main(void) { std::vector Dst; // Dst 생성 Dst.capacity(); // 기본적인 용량 확인 Dst.push_back(3); // 넣고 Dst.capacity(); // 확인 Dst.push_back(3); Dst.capacity(); // 확인 Dst.push_back(3); Dst.capacity(); // 확인 Dst.push_back(3); Dst.capacity(); // 확인 Dst.push_back(3); Dst.capacity..
최근댓글