編譯錯誤:您提交的代碼無法完成編譯第22行:12: error: variable length array of non-POD element type 'string' (aka 'basic_string')string a[n];^第87行:19: warning: comparison of integers of different signs: 'long' and 'size_type' (aka 'unsigned long') [-Wsign-compare]for (long i = 0;i<vec1.size();i++){?~^~~~~~~~~~~~第98行:19: warning: comparison of integers of different signs: 'long' and 'size_type' (aka 'unsigned long') [-Wsign-compare]for (long i = 2;i<a.length();i++){?~^~~~~~~~~~~2 warnings and 1 error generated.#include?<iostream>
#include?<vector>
#include?<string>
using?namespace?std;
bool?find(vector<string?>?vec1,string?temp,long&index);
string?yhq(string?a);
int?main(){
long??index?=?0;
long??n;
long?sum?=?0;
????long?wenhao;
????long?i;
????int?flag?=?0;
vector<string>?vec1;
string?temp;bool?is;
?while?(cin>>n){
? vec1.clear();
? wenhao?=?0;
? string?a[n];
? for?(i?=?0;i<n;i++){
? a[i]?=?"";
? }
? cin.ignore();
?
????if?(n==?0){
???? cout<<-1<<endl;
???? sum++;
???? continue;
????}
? for?(i?=?0;i<n;i++){
? getline(cin,a[i]);
? }
? for?(i?=?0;i<n;i++){
? if(a[i][0]?==?'I'){
? ?temp?=?yhq(a[i]);
? ?is?=?find(vec1,temp,index);
? ?if?(is?==?true){
? ? if?(wenhao>0){
? ? wenhao--;
? ? }else?{
? ? flag?=?1;
? ? break;
? ? }
? ?
? ?}else?{
? ?????vec1.push_back(temp);
? ?}
? }else?if?(a[i][0]?==?'O'){
? temp?=?yhq(a[i]);
? is?=?find(vec1,temp,index);
? if?(is?==?false){
? if?(wenhao>0){
? wenhao--;
? }else?{
? flag?=?1;
?break;
?
? }
? ?
? ?}else?{
? ? vec1.erase(vec1.begin()+index);
? ?}
? }else?if?(a[i][0]?==?'?'){
? wenhao++;
?
? }
?
? }
?
? if?(flag?==?0){
? cout<<-1<<endl;
? sum++;
? }
? else?{
? cout<<sum<<endl;
? flag?=?0;
? sum?=?0;
? }
????
?
?}
return?0;
}?
bool?find(vector<string>?vec1,string??temp,long&index){
for?(long?i?=?0;i<vec1.size();i++){
if?(vec1[i]==temp){
index?=?i;
return?true;
}
}
return?false;
}
string?yhq(string?a){
string?temp?=?"";
for?(long?i?=?2;i<a.length();i++){
temp.push_back(a[i]);
}
return?temp;
}
1 回答
已采納

onemoo
TA貢獻883條經驗 獲得超454個贊
第 22 行處是錯誤,不過跟 string 沒有關系。
string a[n] ?這里你定義的 a 是數組,但是數組在定義時提供的數組大小必須是整型常量,不能用變量 n。
如果你想要一個元素是 string 、類似于數組的結構的話,就用 vector 好了: std::vector<std::string> a
第 87 和 98 行不是編譯錯誤,只是警告。警告發生在?i<vec1.size() 這一句。
vector 的 size() 返回的是 size_type 類型(就是一個足夠大的無符號整型類型),而你這里用 long 型的 i 去比較,long 是有符號整型,所以報了類型不匹配警告。
一般數值不大的話,這樣的比較也不會出錯,所以你可以忽略這個警告。 不過為了嚴謹,你應該將 i 聲明為 vector<string>::size_type 類型 或者是 std::size_t 類型(這也是個常用的大整型)。
- 1 回答
- 0 關注
- 3898 瀏覽
添加回答
舉報
0/150
提交
取消