2

一定のサイズのベクトルを保持するためのC++標準タイプはありますか?たとえば、すべての要素タイプが同じタプルのようなものなので、テンプレート引数としてサイズを指定するだけで済みますか?

を使用する場合と同じ/同様の動作をしたいのですstd::vectorが、型は生の配列と同じくらいコンパクトで効率的である必要があります(したがって、動的な割り当てや実行時のサイズ情報などはありません)

私はC++03互換のソリューションを好むので、aを再利用するstd::tupleことは私が望んでいることではありません。

次のクラスは私が望むことをしますか?

template<typename T, int N>
struct vec
{
    T component[N];

    // (+ some logic and accessors like operator[]...)
};

// concrete example:
vec<int,3> myVector;

ただ言うだけとは本当に違うのでしょうかT myVector[N](具体例int myVector[3])?それは私が現在行っていることですが、生の配列は「単なるポインタ」(+サイズ情報)であり、戻り値として使用できず、実際には値によって渡されないため、いくつかの問題が発生しています(ディープコピーは発生しません)。

4

1 に答える 1

10

C++11にはstd::array;があります。これは基本的にあなたが書いたものと同じです。

C ++ 03の場合、boost::array基本的にと互換性のあるものを使用しstd::arrayます。

于 2013-01-12T18:13:45.110 に答える