容器存放string指針

假如set中存放string指針,想當然可能會如此寫:

 

但是在定義setPtr時,使用了默認的less<string*>仿函數,即插入元素的時候比較的是指針,並非指針內容,因此,應該自定義比較類型函數

 

 

定義應該改爲:std::set<std::string*, StringPtrlLess> setPtr;這樣做了之後,比較順序就對了。

但是呢,std::copy(setPtr.begin(), setPtr.end(), std::ostream_iterator<string>(std::cout, "/n"));不能用,因爲ostream_iterator<string>接受string類型,但是傳給它的卻是string*。可以試試解引用:

 

 

完整代碼如下:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章