>  기사  >  백엔드 개발  >  루프 없이 특정 요소를 사용하여 std::벡터를 초기화하는 방법은 무엇입니까?

루프 없이 특정 요소를 사용하여 std::벡터를 초기화하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-24 03:08:02288검색

How to Initialize a std::vector with Specific Elements Without Loops?

배열과 같이 하드코딩된 요소를 사용하여 std::벡터를 초기화하는 방법

하드코딩된 요소 목록을 사용하여 std::Vector 초기화 배열을 초기화하는 단순함에 비해 번거로워 보일 수 있습니다. 일반적인 접근 방식은 push_back()을 사용하여 요소를 벡터에 반복적으로 푸시하는 것입니다. 그러나 배열 초기화의 간결한 구문을 반영하는 더 우아한 솔루션이 있습니까?

C 11의 우아한 솔루션

컴파일러가 C 11을 지원하는 경우 대답은 다음과 같습니다. 예. {}:

<code class="cpp">std::vector<int> v = {1, 2, 3, 4};</code>

으로 묶인 요소 목록을 사용하여 std::Vector를 직접 초기화할 수 있습니다. 이 구문은 배열 초기화를 모방하고 루프나 push_back()이 필요하지 않습니다.

이전 컴파일러를 위한 대안

C 11을 지원하지 않는 컴파일러의 경우 대체 방법이 있습니다:

Boost.Assign 라이브러리:

Boost.Assign 라이브러리는 다음 구문을 사용하여 벡터를 초기화하는 편리한 방법을 제공합니다.

<code class="cpp">#include <boost/assign/list_of.hpp>
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);</code>

연산자 오버로드:

=를 오버로드할 수 있습니다. 벡터를 초기화하는 연산자:

<code class="cpp">#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
std::vector<int> v;
v += 1, 2, 3, 4;</code>

이 방법은 직접 초기화에 비해 약간의 성능 오버헤드가 있으므로 성능이 중요한 코드에는 적합하지 않습니다.

위 내용은 루프 없이 특정 요소를 사용하여 std::벡터를 초기화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.