C++ algorithm文件函数报错

C++ algorithm 文件中 有个 set_intersection 函数 ,用来找两个有序容器中的交集,我调用的时候除了问题
Vscode (g++)

img

img

visual studio 2019

img

img

这咋回事?

set_intersection()最后一个参数是输出迭代器

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>

using namespace std;
int main()
{
    vector<int> v1, v2, v3;
    for (int i = 0; i < 5; i++)
    {
        v1.push_back(i);
        v2.push_back(i + 3);
    }
    cout << "v1: ";
    copy(v1.begin(), v1.end(), ostream_iterator<int>(cout, " "));
    cout << "\nv2: ";
    copy(v2.begin(), v2.end(), ostream_iterator<int>(cout, " "));
    cout << "\nset_intersection(v1,v2): ";
    set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(v3));
    copy(v3.begin(), v3.end(), ostream_iterator<int>(cout, " "));
    return 0;
}
$ g++ -Wall main.cpp
$ ./a.out
v1: 0 1 2 3 4 
v2: 3 4 5 6 7 
set_intersection(v1,v2): 3 4

set_intersection函数的第五个参数也应该是一个迭代器,所以是dst.begin()而不是dst。

template <class InputIterator1, class InputIterator2, class OutputIterator>
OutputIterator set_intersection ( InputIterator1 first1, InputIterator1 last1,
                                  InputIterator2 first2, InputIterator2 last2,
                                  OutputIterator result );