我試圖按照一個向量對具有兩個值的用戶定義數據類型的向量進行排序。但是我得到了bad_alloc的錯誤。這是代碼:程序中的C++向量std :: bad_alloc錯誤
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct s{
int value;
int weight;
};
bool comp(s a , s b){
return a.value>b.value;
}
int main(){
vector <s> p;
s temp;
int n;
cin>>n;
while(n>=1){
cin>>temp.value;
cin>>temp.weight;
p.push_back(temp);
}
sort(p.begin(), p.end(), comp);
vector <s> :: iterator it;
for(it = p.begin(); it != p.end();it++){
*it = temp;
cout<<temp.value<<endl;
}
}
運行:
扔 '的std :: bad_alloc的' 的一個實例是什麼()終止後,被稱爲:標準:: bad_alloc的
能有人幫忙嗎?
'while(n> = 1)',一個無限循環? – songyuanyao
'std :: vector :: push_back()'當緩衝區容量不足時重新分配內存。這和songyuanyao _must_提到的無限循環在經過足夠次數的迭代之後以'std :: bad_alloc'結束。我不明白的是:你如何提供如此多的輸入數據以致「內存不足」(又名bad_alloc)可能發生? – Scheff