【发布时间】:2019-12-27 16:53:36
【问题描述】:
下面的 C++ 代码应该是反转向量。
#include <bits/stdc++.h>
using namespace std;
vector<int> reverseArray(vector<int> a){
vector<int> b;
for (int i=0;i<a.size();i++){
b.at(i) = a.at(a.size()-i-1);
}
return b;
}
int main(){
int input;
vector<int> arr;
// read vector
while(cin >> input){
arr.push_back(input);
}
// print vector
for (int i=0;i<arr.size();i++){
cout << arr.at(i) << " ";
}
cout << endl <<"Reversed vector is:- ";
vector<int> r_arr = reverseArray(arr);
// print reversed vector
for (int i=0;i<r_arr.size();i++){
cout << arr.at(i) << " ";
}
}
但是,抛出如下错误:-
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)
Aborted (core dumped)
我检查了 a.size()-i-1 在 a.size() = 6 的情况下从 5 变为 0。那为什么代码不起作用?问题出在哪里?
请帮忙,我正在学习 C++ STL。
【问题讨论】: