標籤:str 自訂類 code 中序遍曆 close for sed 遍曆 family
set就是數學上的集合,每個元素最多隻出現一次 ,自訂類型也可以構造set,但必須定義小於運算子
問題:
輸入一個文本 找出所有不同的單詞(連續的字母序列),按字典序從小到大輸出
單詞不區分大小寫
思路:
利用stringstream分割出每個詞,利用 set集合元素已經排好序 輸出
代碼:
1 #include<iostream> 2 #include<string> 3 #include<sstream> 4 #include<set>//set數學上的集合,每個元素最多隻出現一次 set中元素已經從小到大排好序 5 using namespace std; 6 set<string>de; //string集合 7 int main() 8 { 9 string s,buf;10 while(cin>>s){11 //處理字串 將非字母的變成空格 字母全變為小寫 12 for(int i=0;i<s.length();i++)13 {14 if(isalpha(s[i]))s[i]=tolower(s[i]);15 else s[i]=‘ ‘; 16 }17 stringstream ss(s);18 while(ss>>buf)de.insert(buf); //通過空格符分隔文本 19 }20 21 //利用迭代器遍曆set集合輸出 22 set<string>::iterator it; //定義前向迭代器 23 //中序遍曆集合中的所有元素 24 for(it=de.begin();it!=de.end();it++) 25 cout<<*it<<endl; 26 //迭代器類似於指標 27 28 29 }
注意點:
<sstream>庫定義了三種類:istringstream、ostringstream和stringstream,分別用來進行流的輸入、輸出和輸入輸出操作。
stringstream>>result;//向result中寫入值
stringstream<<t;//向流中傳值
簡單使用:
1 string test="123 345 yuna hhh qwe";2 stringstream ss(test);3 string s;4 cout << "按照空格讀取字串:" << endl;5 while(ss >>s)cout<<s<<endl;
View Code
C++ set容器