容器存放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*。可以试试解引用:

 

 

完整代码如下:

 

 

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