C++ 我可以复印';向量';'中的元素;设置';使用复制算法?

C++ 我可以复印';向量';'中的元素;设置';使用复制算法?,c++,C++,我在下面的代码中得到了运行时错误。请让我知道我可以复制集合中的向量元素吗 #include <iostream> #include <vector> #include <set> using namespace std; int main() { vector<int> v; set<int> kk; set<int>::iterator itr; for (int i = 0; i <

我在下面的代码中得到了运行时错误。请让我知道我可以复制集合中的向量元素吗

#include <iostream>
#include <vector>
#include <set>
using namespace std;
int main()
{
    vector<int> v;
    set<int> kk;
    set<int>::iterator itr;
    for (int i = 0; i < 6; i++)
    {
        v.push_back(i * 2);
    }
    copy(v.begin(), v.end(), inserter(kk, itr));
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
向量v;
设置kk;
迭代器itr;
对于(int i=0;i<6;i++)
{
v、 推回(i*2);
}
复制(v.begin(),v.end(),插入器(kk,itr));
}

您需要初始化迭代器

set<int>::iterator itr = kk.end();
set::迭代器itr=kk.end();
试试:


您没有初始化itr
itr

set<int>::iterator itr = kk.begin();
在本例中,您可以简单地初始化
kk
(但是如果您想添加到
kk
,请按照上面的行进行操作):

设置kk(v.begin(),v.end());

如果目标是从矢量元素创建一个集合(而不是更新可能包含某些元素的现有集合),则使用构造函数:

set<int> s(v.begin(), v.end());
设置s(v.begin(),v.end());
copy(v.begin(), v.end(), inserter(kk, kk.begin()));
set<int> kk(v.begin(), v.end());
set<int> s(v.begin(), v.end());