我可以使用复制算法复制'set'中的'vector'元素吗?

Can i copy 'vector' elements in 'set' using the copy algorithm?

本文关键字:复制 vector 元素 中的 set 算法 我可以 可以使      更新时间:2023-10-16

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

#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));
}

您没有初始化itr:

set<int>::iterator itr = kk.begin();

或者完全删除itr:

copy(v.begin(), v.end(), inserter(kk, kk.begin()));

在这种情况下,您可以简单地初始化kk(但如果您想添加到kk,请按照上面的行):

set<int> kk(v.begin(), v.end());

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

set<int> s(v.begin(), v.end());

您需要初始化迭代器。

set<int>::iterator itr = kk.end();

尝试:

copy(v.begin(), v.end(),inserter(kk, kk.end() ));  
                                  // ^^^^^^^^  You need a real iterator.