a std::vector<int> intVec
를 std::vector<double> doubleVec
. 또는 더 일반적으로 두 개의 변환 가능한 유형 벡터를 변환하려면?
답변:
std::vector
의 범위 생성자를 사용하십시오 .
std::vector<int> intVec;
std::vector<double> doubleVec(intVec.begin(), intVec.end());
copy(v_int.begin(), v_int.end(), back_inserter(v_float));
나v_float.resize(v_int.size()); copy(v_int.begin(), v_int.end(), v_float.begin());
std::distance()
"무작위 액세스 반복자 인 경우 함수는 operator-를 사용하여이를 계산합니다. 그렇지 않으면 함수는 증가 연산자 (operator ++)를 반복적으로 사용합니다." 따라서이 경우 요소의 양은 반복자를 빼서 찾을 수 있습니다. 표준 라이브러리가 초기 reserve ()에 std :: distance를 사용하도록 구현되었는지 여부는 또 다른 질문이지만 godbolt.org/z/6mcUFh 에는 적어도 std :: distance ()에 대한 호출이 포함되어 있습니다.
std::copy(...)
함수를 사용할 수도 있습니까? 대답에 추가 할 수 있습니까?