std::atomic<int>
과 같이 이동 또는 복사 생성자가없는 고정 된 크기의 std::vector
개체를 생성한다고 가정 해 보겠습니다. 이 경우 하위 std::atomic
클래스에는 int
을 취하는 1 개 인수 생성자와 기본 생성자 (값을 0으로 초기화 함)가 있습니다.std :: vector의 배치와 같은 구조
생성자의 인수가 처음 그래서 사본을 initializer_list
의 창조의 일부로서 벡터의 요소 유형 T
로 변환되기 때문에, 일을하거나 움직이지 않는 std::vector<std::atomic<int>> v{1,2,3}
같은 initializer_list
구문을 사용하여이 호출됩니다. I 후에 요소 돌연변이 후 벡터를 기본적으로 구성하고있다 std::atomic<int>
의 특정한 경우
std::vector<std::atomic<int>> v(3);
v[0] = 1;
v[1] = 2;
v[2] = 3;
그러나, 그것은 많은 사람 일반적인 해결책이 아니다 객체는 적절한 생성자를 호출하여 얻을 수있는 것과 동일한 사후 변형을 제공하지 않을 수 있습니다.
벡터 구축시 원하는 "emplace-like"동작을 얻을 수있는 방법이 있습니까?
정말로, 나는 단지'std :: deque'를 사용할 것이다. 하지만 할 수 없다면 원하는 것을 수행하는 유일한 방법은 맞춤 할당자를 사용하는 것입니다. – Brian
@Brian -'std :: deque'는이 건설 관용구를 허용합니까? – BeeOnRope
'std :: deque'를 사용하면 요소를 하나씩 옮겨야 만합니다. 그러나 요소를 시작 또는 끝에 추가하면 다른 요소가 이동하지 않으므로 작동합니다. – Brian