亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c++ 關于string和vector的兩個錯誤

c++ 關于string和vector的兩個錯誤

C C++
菠蘿1230 2017-06-13 21:00:23
編譯錯誤:您提交的代碼無法完成編譯第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 類型(這也是個常用的大整型)。

查看完整回答
反對 回復 2017-06-13
  • 1 回答
  • 0 關注
  • 3898 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號