Visual c++ 如何在VC+中使用set_交集和std::set+;?

Visual c++ 如何在VC+中使用set_交集和std::set+;?,visual-c++,stl,visual-c++-2010,Visual C++,Stl,Visual C++ 2010,我正在尝试用VC10编译VC6项目。。。 我得到了一个错误C2678与集_交集:我写了一些例子来理解。有人能解释一下如何编译这些代码片段吗 #include <vector> #include <algorithm> #include <iostream> #include <set> #include <string> int main( ) { using namespace std; typedef set&l

我正在尝试用VC10编译VC6项目。。。 我得到了一个错误C2678与集_交集:我写了一些例子来理解。有人能解释一下如何编译这些代码片段吗

#include <vector>
#include <algorithm>
#include <iostream>
#include <set>
#include <string>

int main( )
{
    using namespace std;

    typedef set<string> MyType;

    MyType in1, in2, out;
    MyType::iterator out_iter(out.begin()); 

    set_intersection(in1.begin(),in1.end(), in2.begin(), in2.end(), out_iter);
}
#包括
#包括
#包括
#包括
#包括
int main()
{
使用名称空间std;
typedef设置MyType;
MyType-in1,in2,out;
MyType::迭代器out_iter(out.begin());
设置交点(in1.begin()、in1.end()、in2.begin()、in2.end()、out\iter);
}
输出:

c:\program files\microsoft visual studio 10.0\vc\include\algorithm(4494):错误C2678:“=”二进制:未定义接受“const std::basic_string”类型左侧操作数的运算符(或没有可接受的转换)

如果我使用
std::vector
而不是
std::set
编译成功。 可接受)

尝试
设置交叉点(in1.begin()、in1.end()、in2.begin()、in2.end()、插入器(out、out.begin())

这是因为set_intersection想要写入输出迭代器,这会导致输出容器的大小增加。但是,仅使用迭代器是无法做到这一点的(它可以用来覆盖现有元素,但不能增加大小)

编辑:修正了打字错误。使用插入器添加到集合。反向插入器仅适用于向量等


编辑2:修复了另一个打字错误。STL
inserter
需要第二个参数,该参数是指向可能插入位置的提示迭代器。谢谢chepseskaf。

我已经完成了问题。使用inserter(out,out\iter)编译成功