先來一道程式看看吧。程式如下如題目要求是定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號、現在繼續
//定義乙個map,將單詞與乙個行號的list關聯,list中儲存單詞出現的行號
其中本來答案中需要in檔案流繫結,我卻用了兩個cin來控制檔案輸入單詞以及行號控制。在這裡需要注意的是cin的狀態
,在我們按下一次ctrl+z後cin狀態已經為false了也就是說,在後面再有cin>>word這個語句是無效的,在這樣的情況下,需要對cin的狀態進行恢復,也就是**中的cin.clear();
對於map
find是查詢關鍵字在容器中出現的位置,而count還會統計關鍵字出現的次數,因此:
程式設計練習,編寫程式,定義乙個作者及其相關作品的multimap,使用find在容器內查詢乙個元素並用erase刪除他,確保就算容器內沒有這個元素也能執行成功。
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
void remove_author(multimap
&book, const
string &author)//刪除某個作者及其所對映的書,可以理解成某個作者犯事了,然後被要求,這個作者的書必須的下架。就是這麼個意思
else
book.erase(pos.first, pos.second);
}void print_books(multimap
&book)
cout
<< endl;
}int main(int argc, char **argv)
for (auto v:data)
*/multimap
books;
books.insert();
books.insert();
books.insert();
print_books(books);
remove_author(books,"忘語");
print_books(books);
system("pause");
return
0;}
執行結果如下:
1. 這裡做的操作就是插入三本書,輸出,刪除一本書,在輸出的效果。
2. 在這裡還可以使用find和lower_bound、upper_bound也可以實現目標,但是相對而言沒有上文簡單
#include
using
std::map;
#include
using
std::string;
#include
using
std::pair;
#include
using
std::size_t;
#include
using
std::cin; using
std::cout; using
std::endl;
int main()
return
0;}
上述**是c++primer最後一題的標準答案,由此可以看出人家總體的風格較好,比我這個菜鳥水平好多了,考慮的也很周全。
#include
#include
#include
#include
#include
#include
#include
using
std::map; using
std::string; using
std::vector;
using
std::ifstream; using
std::cout; using
std::endl;
using
std::getline;
using
std::runtime_error; using
std::istringstream;
map buildmap(ifstream &map_file)
const
string &
transform(const
string &s, const
map &m)
// first argument is the transformations file;
// second is file to transform
void word_transform(ifstream &map_file, ifstream &input)
cout
<< endl; // done with this line of input
}}int main(int argc, char **argv)
//其實**風格也沒有多好,如果仔細看的話。就先這樣吧。 c primer 關聯容器 map
map 是鍵 值對的集合。map型別通常可以理解為關聯陣列,其本質在於元素的值和某個特定的鍵向關聯,而非通過元素在陣列中的位置來獲取 宣告與定義 mapm mapword count 迭代器 map iterator it 對鍵型別的約束 鍵型別必須支援 操作符 map定義的型別 1.迭代器進行解引...
C primer 關聯容器
pairp1 pairp1 v1,v2 v1為t1型別,v2為t2型別 make pair v1,v2 返回乙個pair物件 p.first p.second 關聯容器不能通過容器大小定義,不能用resize。mapm m2 mapm mapm b,e b,e為map迭代器。鍵必須支援 map ke...
STL關聯容器之map
map和set一樣,也是一種關聯容器,內部也是使用紅黑樹作為底層的實現結構。但是不同的是,map的鍵值和實值可以是不一樣的。map與set的查詢操作本質上是一樣的,沒有特殊的地方。map使用鍵值排列元素的位置,因而也不允許插入相同鍵值的元素,插入演算法返回pair iterator,bool 分別指...