0
struct Cord
    {
        int x_cord;
        int y_cord;
        Cord(int x = 0,int y = 0):x_cord(x),y_cord(y) {}
        bool operator < (const Cord& cord) const
        {
            if (x_cord == cord.x_cord)
            {
                return y_cord < cord.y_cord;
            }
            return x_cord < cord.x_cord;
        }
        bool operator == (const Cord& cord) const
        {
            return x_cord == cord.x_cord && y_cord == cord.y_cord;
        }
    };
std::set<Cord> cordRes,cordTmp;//initialized before
std::set<Cord> cordItersect;
std::set_intersection(cordRes.begin(),cordRes.end(),cordTmp.begin(),cordTmp.end(),cordRes.begin(),cordItersect.begin());

上記のコードのコンパイルは失敗しますset_intersection。例で正しく使用する方法についての提案はありますか?ありがとう

4

1 に答える 1

1

問題の 1 つは、set_intersection が 5 つの引数しかとらないことです。もう 1 つの問題は、cordItersect に挿入する要素を作成するメカニズムが必要なことです。あなたの場合、std::inserter を使用することになります。

std::set_intersection(cordRes.begin(), cordRes.end(),
    cordTmp.begin(), cordTmp.end(),
    std::inserter(cordItersect, cordItersect.end()));
于 2013-03-23T20:45:25.477 に答える