9. STL: Containers

STL 컨테이너를 알아보자.

76. Use vector by default. Otherwise, choose an appropriate container.

올바른 컨테이너를 사용하는 것은 좋다. 특정한 컨테이너 유형을 써야 할 좋은 이유가 있다면 올바른 작업을 한다는 것을 아는 상태로 그 컨테이너 유형을 쓰라.

vector를 사용하는 것도 그러하다. 아니면 vector를 흔들림 없이 쓰라. 물론 올바른 작업을 한다는 것을 아는 상태로.

77. Use vector and string instead of arrays.

왜 꽃병을 가지고 저글링을 하는가? C 스타일 배열과 포인터 연산, 메모리 관리 원시 도구를 가지고 배열 추상화를 구현하는 것을 피하라. vector나 string을 사용하는 것은 삶을 편하게 할 뿐만 아니라, 더 안전하고 확장 가능한 소프트웨어를 쓰도록 돕는다.

78. Use vector (and string::c_str) to exchange data with non-C++ APIs.

vector는 이해되지 않는 것이 아니다. vector와 string::c_str는 비 C++ API와 통신하기 위한 관문이다. 하지만 반복자를 포인터로 가정하지 말라. vector::iterator iter에 의해 참조되는 항목의 주소를 얻기 위해서는 &*iter를 쓰라.

79. Store only values and smart pointers in containers.

값의 오브젝트를 컨테이너에 담아라. 컨테이너는 그들이 값과 같은 유형들을 담도록 가정한다. 이는 값 타입 (직접 담긴), 스마트 포인터, 반복자들을 포함한다.

80. Prefer push_back to other ways of expanding a sequence.

할 수 있는 모든 것을 push_back하라. 삽입되는 위치를 신경쓰지 않는다면 push_back을 사용해 항목을 시퀀스에 추가하는 것을 선호하라. 다른 것들은 훨씬 더 느리고 더 불명확할 수 있다.

81. Prefer range operations to single-element operations.

쇠뿔도 단김에 빼라. 원소를 시퀀스 컨테이너에 추가할 때에는 연산의 단일 원소 동작을 연속해서 부르는 것보다는 C++20의 범위 연산을 선호하라. 이는 더 쓰기 쉽고, 읽기 쉽고, 명시적 루프보다 효율적이다.

82. Use the accepted idioms to really shrink capacity and really erase elements.

작동하는 식이요법을 써라. 컨테이너에서 용량을 정말 줄이려면 교환 트릭을 쓰라. 컨테이너로부터 정말 항목을 삭제하려면 C++20의 std::erase, std::erase_if를 쓰라.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중