パフォーマンスは私がstd::experimental::dynarray
のように働く何か、そのサイズは、実行時に決定された配列を必要とする私のアプリケーションで実行時の固定サイズのstd :: vectorですか?
非常に重要です。
だから私はresize
、reserve
またはpush_back
を呼び出すために、std::vector
のためのラッパークラスを使用して、すべての機能を与えることが、可能性のない考えました。いくつかの言葉では、サイズを変更するためのすべてのメソッド(私がそれらのいくつかを逃した場合は私を覚えてください)。
だから私はこのクラスを書き始めた:
CCVector.hpp
:
template <typename T>
class CCVector{
public:
CCVector(size_t size);
T &operator[](typename std::vector<T>::size_type idx);
private:
std::vector<T> v;
};
CCVector.cpp
:
template<typename T>
CCVector<T>::CCVector(size_t size) : v(size){}
template<typename T>
T& CCVector<T>::operator[](typename std::vector<T>::size_type idx){
return v[idx];
}
しかし、私は、私はstd::vector
ことの再実装every
方法に持っていると思った私は、この時点私は欲しい!たとえば、begin
、end
、size
など、私はそれらのすべてを実装する方法がわかりません...さらに、これはメンテナンスのためには本当に悪いです:私がstd::vector
から新しいメソッドが必要になると直ちにそれを再実装する必要がありますCCVector
。
これはすべて、実行時に固定サイズの配列が必要なためです。非標準のstd::experimental::dynarray
を使用せずにこれをどのように解決できますか?
std :: vectorから継承するだけで、パブリックセクションで公開する各関数に対してusingステートメントを実行します。次に、無効にするすべての関数のprivateセクションでusingステートメントを実行します。 –
また、[here](http://stackoverflow.com/a/15832431/4342498)からコードを使用することができます – NathanOliver
@AlexZywicki、いいえ、それをしないでください。 [あなたは 'std :: vector'から継承しません](http://stackoverflow.com/questions/4353203/thou-shalt-not-inherit-from-stdvector)を参照してください。 –