2016-05-31 8 views
-1

ベクトルに要素を挿入しようとしていますが、何か間違っているようです。vector.insert()の問題

私はベクトルを宣言するのはここです:

std::vector<Dice> dicearray;

これはエラーをスローラインである:

dicearray.insert(dicearray.size()-1 ,Dice());

そして、これらがスローされるエラーです。

Error (active) no instance of overloaded function "std::vector<_Ty, _Alloc>::insert [with _Ty=Dice, _Alloc=std::allocator<Dice>]" matches the argument list ConsoleApplication3 c:\Users\Miguel\Documents\Visual Studio 2015\Projects\ConsoleApplication3\ConsoleApplication3\ConsoleApplication3.cpp 60

Error C2664 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<Dice>>> std::vector<Dice,std::allocator<_Ty>>::insert(std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<Dice>>>,unsigned int,const _Ty &)': cannot convert argument 1 from 'unsigned int' to 'std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<Dice>>>' ConsoleApplication3 c:\users\miguel\documents\visual studio 2015\projects\consoleapplication3\consoleapplication3\consoleapplication3.cpp 60

なぜこれが起こっているすべてのアイデア?

+6

は、なぜあなたは使用しません'push_back'? – BeyelerStudios

+1

あなたはどのバージョンのC++を使用していますか?これは有効なpre C++ 11 – NathanOliver

+0

私はいくつかの位置に要素を追加したいと思います。しかし、それもこの問題のために働いています。ありがとう。 – Wazowski

答えて

5

反復子を挿入する位置に、イテレータ(参照:http://www.cplusplus.com/reference/vector/vector/insert/を参照)を指定する必要があります。エラーは、基本的に、これらのタイプの引数(数値、要素)をとる関数がないことを示しています。だから、:要素が既に所望の位置にあります場合は、最後までその場所からすべての要素が「アップ」一つの位置をずらしている

dicearray.insert(dicearray.end(), Dice()); // Insert element at the end (yes, without - 1) 

注意。あなただけの追加に要素をたい場合

、あなたがpush_backを使用することができます(そして、あなたが位置を指定していない、それが最後の位置に挿入されています):

dicearray.push_back(Dice()); 
+0

これは、それは今動作します。ありがとう、それはiteratorが必要であることに気付かなかった、数字ではありません。ありがとう。 – Wazowski

関連する問題