Моя функция должна обратить значения вектора, но в одном случае я получил исключение out_of_range. Пожалуйста, объясните мне, в чем разница между этими случаями:
/// working version of my function
void Reverse(vector<int>& v)
{
for (int i = 0; i < v.size() / 2; i++)
{
int temp = v[i];
v[i] = v[v.size() - (i + 1)]; /// look at round brackets
v[v.size() - (i + 1)] = temp;
}
}
/// wrong version
void Reverse2(vector<int>& v)
{
for (int i = 0; i < v.size() / 2; i++)
{
int temp = v[i];
v[i] = v[v.size() - i + 1]; /// this is wrong
v[v.size() - i + 1] = temp; /// same
}
}
///
int main()
{
vector<int> v = { 10, 22, 13, 144, 55, 167, 999};
Reverse(v);
for (auto c : v)
{
cout << c << " ";
}
}