1. ホーム
  2. c++

[解決済み] ベクトル加算演算

2022-02-14 21:19:10

質問

私は2つのベクトルを追加しようとしている以下のコードスニペットです: - 。

#include <iostream>
#include <vector>
using namespace std;

int main()
{
        unsigned int i = 0;
        vector <float> v1;
        vector <float> v2;
        vector <float> v3;



        cout << "Filling the Numbers\n";
        for (i=5;i < 125 ; i = i + 5) {
            v1.push_back(i/10);
            v2.push_back(i/100);
        }

        cout << "Adding the numbers\n";
        for (i = 0; i < v1.size(); i++) {
                v3[i] = v1[i] + v2[i];
        }

        cout << "Printing the numbers\n";
                for (i = 0; i < v3.size() ; i++) {
                        cout << v3[i];
                }


        return 0;
}

18行目でプログラムがクラッシュしてしまいます。演算子のオーバーロードが必要なようです。助けてください。

どのように解決するのですか?

この行はうまくいきません。 v3[i] が割り当てられています。

v3[i] = v1[i] + v2[i];

選択肢は2つ、'push_back'を使うか

v3.push_back( v1[i] + v2[i] );

あるいは、あらかじめ配列を指定されたサイズにリサイズしておく。

v3.resize( v1.size() );

push_backする場合は、とにかくスペースを事前に確保するのがいいでしょう。

v3.reserve( v1.size() );

そして最後に、読んでみてください。 std::valarray これらの操作はすでに組み込まれているからです。

編集する と、そう、Johannesが指摘したように、浮動小数点数の除算に問題があるのですね :>