더북(TheBook)

이 경우 벡터의 크기는 목록의 길이를 통해 구할 수 있다. 이전에 봤었던 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);
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.