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

ash*_*ari 4 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));
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

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

raf*_*x07 5

如果要使用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);
Run Code Online (Sandbox Code Playgroud)