如何使用该对中的第一个元素找到集合中的对?

时间:2017-12-03 06:42:09

标签: c++ set

您好我有一组包含以下元素的对。

set < pair<int,int> >st;
st.insert(make_pair(1,2));
st.insert(make_pair(4,5));
st.insert(make_pair(7,8));

现在我想根据该对的第一个元素从集合中删除该对 使用set.erase()。?

In - {(1,2),(4,5),{7,8}}
To achieve -  set.erase({1}).
out- {(4,5),(7,8)} // removing member of set using first element of pair.

请帮助实现这一目标。提前致谢 !!!

2 个答案:

答案 0 :(得分:1)

如果要使用erase方法删除元素,则需要获取迭代器以移除位置,使用带有谓词的find_if算法来查找元素,并将此迭代器传递给erase方法

    auto it = std::find_if(st.begin(), st.end(), [](const pair<int,int>& p ){ return p.first == 1; });
    if (it != st.end())
        st.erase(it);

答案 1 :(得分:0)

std::map非常适合您的需求。 erase上的密钥方法有map

但是如果你真的需要使用set,请使用标准算法查找元素,然后使用erase算法返回的迭代器在集合上使用find_if