vector去除重覆混合技

去除自身重覆的元素。

void removeRepeatMember()
{
    vector<CTest> member;

    /*  member.push_back(lots of data)  */

    std::sort(result.begin(), result.end());
    result.erase(std::unique(result.begin(), result.end()), result.end());
}

去除外來指定元素

void removeMember(const CTest& objTest)
{
    result.erase(remove(result.begin(), result.end(), objTest), result.end());
}
上例的vector是裝string,如果是裝自訂的類別CTest,則需要重載運算子。
sort()需要重載<運算子。
unique()需要重載==運算子。
class CTest
{
public:
    bool operator< (const CTest&     oCompany ) const;
    bool operator==(const CTest& oCompany ) const;
}

參考:
STL—vector删除重复元素
std::remove - c++ Reference

沒有留言:

張貼留言

(什麼是留言欄訊息?)