이 경우 벡터의 크기는 목록의 길이를 통해 구할 수 있다. 이전에 봤었던 vector_add 함수를 보다 안정적으로 구현할 수 있다.
void vector_add(const vector<float>& v1, const vector<float>& v2, vector<float>&> s) { assert(v1.size() == v2.size()); assert(v1.size() == s.size()); for (unsigned i = 0; i < v1.size(); ++i) s[i] = v1[i] + v2[i]; }
C의 배열 및 포인터와 달리 벡터 인수는 크기를 알고 있으므로 일치하는지를 확인할 수 있다. 참고: 배열의 크기는 나중에 템플릿을 사용해 추론할 수 있다(3.11.9절 참조).
벡터는 복사 가능하며 함수를 통해 반환할 수도 있다. 이렇게 하면 보다 자연스러운 표기법을 사용할 수 있다.
vector<float> add(const vector<float>& v1, const vector<float>& v2) { assert(v1.size() == v2.size()); vector<float> s(v1.size()); for (unsigned i = 0 ; i < v1.size(); ++i) s[i] = v1[i] + v2[i]; return s; } int main() { std::vector<float> v = {1, 2, 3}, w = {7, 8, 9}, s = add(v, w); }