矢量倒转中矢量错误故障排除

  • 本文关键字:故障 排除 错误 c++
  • 更新时间 :
  • 英文 :

vector<vector<string>> Reverse(vector<vector<string>> a){
vector<string> dd;
for(int i = 0; i < a.size()/2; i++){
dd = a[i];
a[i] = a[-1*(i) - 1];
a[-1*(i) - 1] = dd;
}
return a;
}

我想做一个反向函数,反向向量在一个向量,但我得到和错误:

libc++abi:终止于std::bad_alloc类型的未捕获异常:std::bad_alloc以std::bad_alloc类型的未捕获异常结束:std::bad_alloc

您正在尝试访问向量中的负位置。位置从0开始到vector.size()。你做的事太糟糕了。你得到一个矩阵然后试着把它变换成一个向量?你应该检查你的代码。也许你是这个意思?

vector<vector<string>> reverseRows(vector<vector<string>> a){
for(int i=0;i<a.size();i++){
for(int j=0;j<a[i].size()/2;i++){
string temp=a[i][j];
a[i][j]=a[i][a[i].size()-j-1];
a[i][a[i].size()-j-1]=temp;
}
}
return a;
}
vector<vector<string>> reverseMatrix(vector<vector<string>> a){
for(int i=0;i<a.size()/2;i++){
vector<string> temp=a[i][j];
a[i][j]=a[i][a[i].size()-j-1];
a[i][a[i].size()-j-1]=temp;
}
return a;
}

别白费力气了:

#include <vector>
#include <algorithm>
std::vector<std::vector<std::string>> reverseInner(std::vector<std::vector<std::string>> a) {
for_each(begin(a),end(a),[](auto& v) { reverse(begin(v),end(v)); });
return a;
}
std::vector<std::vector<std::string>> reverseOuter(std::vector<std::vector<std::string>> a) {
reverse(begin(a),end(a));
return a;
}

最新更新