私はテンプレートとSTLを使って実験を行っています。これは...C++、std :: copyとtemplates
template <typename Item>
struct TList
{
typedef std::vector <Item> Type;
};
template <typename Item>
class Cont
{
private:
typename TList <Item>::Type elements;
public:
void push_back (const Item & p) {elements.push_back (p);}
typename TList <Item>::Type ::iterator
copy (typename TList <Item>::Type ::iterator first,
typename TList <Item>::Type ::iterator last,
typename TList <Item>::Type ::iterator result)
{
elements.resize(elements.size() + last - first); //Exception
return copy (first, last, result);
}
typename TList <Item>::Type ::iterator begin() { return elements.begin(); }
};
しかし、コピー操作中に
int main()
{
Cont <double> cont;
cont.push_back(1);
cont.push_back(2);
TList <double>::Type v;
v.push_back(3);
v.push_back(4);
cont.copy(v.begin(), v.end(), cont.begin()); //Exception
cont.copy(v.begin(), v.end(), cont.end()); //Exception
return 0;
}
私のテストコードでプログラムが実行時例外が発生します。エラーを見つけるのを助けてくれますか?
Exception: Vector iterator + offset out of range...
-1:あなたは、デバッガでコードをステップ実行しようとしたことがありますか?または、トレースステートメントを追加してキー変数の値を決定しますか? –
これは貴重なコードです。それはなんのためですか? –
@Space:私のC++の学習でのみテストします... – Johnas