1

唯一のメンバーとしてan を持つカスタム ベクトル クラスを構築し、std::vector+、- などをオーバーロードしてさまざまな数学関数を追加しています。

ベクター要素に直接アクセスするためにこれを行っています:

template <typename T, int N>
class Vector{

    std::vector<T> v;

public:

    Vector():v(N,0){}

    const T& operator[](int i)const{
        return v.at(i);
    }
    T& operator[](int i){
        return v.at(i);
    }

const Vector<...>これは、非 const から要素に割り当てるだけでなく、から要素を読み取ることができるように、この場合のオーバーロードの受け入れ可能な手法ですか? at参照を返すので、この場合、要素に正しく割り当てることができますか?

4

1 に答える 1

3

はい、それは過負荷の完全に合理的な使用です。ただし、の使用に疑問がありますatatと の両方を用意したほうがよいでしょう。これらは対応operator[]するものにパススルーされstd::vectorます。このようにして、発信者に安全性とパフォーマンスのどちらかを選択させることができます (これが、そもそも 2 つのバージョンが存在する理由です)。

于 2013-06-04T08:31:41.947 に答える