0

2 つのベクトルの値を組み合わせる、より読みやすい方法があるかどうか疑問に思っていました。

#include <vector>
#include <iostream>

int main( int argc, char ** argv )
{
    std::vector<int> v1 = { 1, 2, 3, 7 };
    std::vector<int> v2 = { 1, 2, 3, 5, 19 };
    std::vector<int>::iterator v2it = v2.begin();

    if( v1.size() > v2.size() )
    {
        for( auto v1it = v1.begin(); v1it != v1.end(); ++v1it )
        {
            *v1it = *v1it + *v2it;
            std::cout << *v1it << std::endl;
            ++v2it;
        }
    }
    else
    {
        auto v1it = v1.begin();

        for( auto v2it = v2.begin(); v2it != v2.end(); ++v2it )
        {
            *v2it = *v2it + *v1it;
            std::cout << *v2it << std::endl;
            ++v1it;
        }
    }



    return 0;
}

上記の出力は次のとおりです。

2 4 6 12 19

4

2 に答える 2

3

std::transform()同じ長さの範囲を想定する を使用できます。さまざまな長さの範囲のケースを処理する方法を見つけるための演習として、あなたに任せます。

#include <vector>
#include <iterator>
#include <iostream>
#include <algorithm>
#include <functional>

int main()
{
    std::vector<int> v1 = { 1, 2, 3, 7 };
    std::vector<int> v2 = { 1, 2, 3, 5, 19 };

    std::transform(begin(v1), end(v1), begin(v2), 
                   std::ostream_iterator<int>(std::cout, " "), std::plus<int>());
}

これが実際のです。

于 2013-05-20T19:15:12.370 に答える
2

ベクトルで数学を行いたい場合は、以下を参照してください。std::valarray

于 2013-05-20T19:15:52.113 に答える