これは私のスワップ関数です:
template <typename t>
void swap (t& x, t& y)
{
t temp = x;
x = y;
y = temp;
return;
}
これは私の関数です (ちなみに、v は文字列を格納します)。値を交換するために呼び出しますが、ベクトル内の値を使用して呼び出しを試みると、常にエラーが発生します。何が間違っているのかわかりません。
swap(v[position], v[nextposition]); //creates errors
ベストアンサー1
あなたが探しているのはiter_swap
これは にも記載されています<algorithm>
。
必要なのは、交換する要素の 1 つを指す 2 つの反復子を渡すだけです。2
つの要素の位置がわかっているので、次のように実行できます。
// assuming your vector is called v
iter_swap(v.begin() + position, v.begin() + next_position);
// position, next_position are the indices of the elements you want to swap