동안 발전기를 통해 초기화되지 않은 0이 아닌 값 또는 예뻐으로 생산 (유사에 std::generate_n()
) 생성자 인수를 새로운 std::vector
를 구성하는 방법이 있나요 원하는 비표준 (비 상수) 값 없이 모든 요소를 0으로 초기화 하시겠습니까? 이것은 (무작위) 모형 생성 API가 가능한 한 지역 효율적이기를 원하기 때문에 컨테이너 요소를 한 번만 작성해야하기 때문입니다. std::vector
(및 다른 경우도 가능) 발전기 생성자를 사용하는 것이 깔끔하지 않습니까? 왜 C++이 표준에 이미 이것을 추가하지 않았습니까? ,비 상수 발전기 단일 패스 초기화 건설
// Allocate-and-Generate a random int array of length \p n.
int * gen_rand(size_t n)
{
int *v = malloc(n); // allocate only
for (size_t i=0; i<n; i++) {
v[i] = rand(); // first write
}
}
나는 그것이 사용되는 STL 할당 자의 행동에 귀결 생각 :
다음 생성자 같은 C의 기능은 내가 std::vector
의 사용자 정의 초기화 건설을 추구 쓰기 번 동작을 보여줍니다 처음 0을 쓰는 책임이 있기 때문입니다.
반복자를 사용하여 std::vector
생성자를 사용하는 경우 먼저 push_back()
을 사용하는 것보다 더 나쁜 임의의 값을 할당하고 작성해야합니다.
반복자는이 작업을 수행하는 방법입니다. http://www.boost.org/doc/libs/1_48_0/libs/iterator/doc/counting_iterator.html – Lalaland
@EthanSteinberg : std :: vector의 반복기 솔루션은'push_back()'을 사용해야한다. 효율적이거나 다시 요소에 두 번 쓰게됩니다. 'std :: list'와 같은 다른 것들에 대해서, 반복자는 좋은 해결책이 될 수 있습니다. –
생성자에서 반복자를 사용할 수 있습니다 ... – Lalaland