0

C++ VS2010 で、int ベクトルの値を別の int ベクトルに入れたいと考えています。

最初はブルートフォースの方法を試しましたが、うまくいきました:

for (int i=iStartPosInDst0based;i<=(iCountSrcItemsToCopy1based);i++)
{
    uIntegers[i]=nInts[i+iFirstItemInSrcToCopy0based];
}

それからもう少し洗練されたくて「copy」を使ってみました。

copy(nInts.begin()+iFirstItemInSrcToCopy0based, uIntegers.begin()+iCountSrcItemsToCopy1based+iFirstItemInSrcToCopy0based, uIntegers.begin() +iStartPosInDst0based);

しかし、「コピー」はクラッシュします。

私の「コピー」バージョンが私の「ブルートフォース」バージョンと同じであることは確かでしたが、明らかに違いました。しかし、どこが間違っていたのかわかりません。誰か助けてくれませんか?

4

4 に答える 4

2

それはあなたが呼ぶからです

copy(nInts.begin() + ..., uIntegers.begin() + ..., uIntegers.begin() + ...);

2番目のイテレータはそのnIntsようなものでなければなりません

copy(nInts.begin() + ..., nInts.begin() + ..., uIntegers.begin() + ...);
于 2013-04-04T07:31:00.210 に答える
0

iStartPosInDst0basedに最初のイテレータ引数を追加するのを忘れたと思いますcopy

copy(nInts.begin()+iStartPosInDst0based+iFirstItemInSrcToCopy0based, uIntegers.begin()+iCountSrcItemsToCopy1based+iFirstItemInSrcToCopy0based, uIntegers.begin() +iStartPosInDst0based);
于 2013-04-04T07:31:02.087 に答える