벡터의 Push_back 복사 동작 이해
벡터를 사용하여 작업하는 동안 개발자는 push_back 작업 중 복사 생성자 호출 빈도에 관한 질문을 자주 접하게 됩니다. 예를 들어 이 동작을 자세히 살펴보겠습니다.
다음 C 코드를 고려하세요.
<code class="cpp">class Myint { int my_int; public: Myint() : my_int(0) { cout << "Inside default" << endl; } Myint(const Myint& x) : my_int(x.my_int) { cout << "Inside copy with my_int = " << x.my_int << endl; } }; int main() { vector<Myint> myints; Myint x; myints.push_back(x); x.set(1); myints.push_back(x); }</code>
이 코드 조각은 push_back 작업 중에 복사 생성자를 두 번 트리거할 것으로 예상됩니다. 그러나 실행 시 다음 출력이 관찰됩니다.
Inside default Inside copy with my_int = 0 Inside copy with my_int = 0 Inside copy with my_int = 1
복사 생성자가 세 번 호출된 것처럼 보이는 이유는 무엇입니까?
따라서 복사 생성자는 총 3번 호출됩니다. 이 동작을 최적화하려면:
위 내용은 C 벡터에서 `push_back` 작업 중에 복사 생성자가 몇 번 호출됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!