我在以下代码中收到运行时错误。请让我知道我可以复制集合中的矢量元素吗?
#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));
}
答案 0 :(得分:24)
您没有初始化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());
答案 1 :(得分:11)
如果目标是从向量元素创建一个集合(而不是更新可能包含其中某些元素的现有集合),那么使用构造函数执行此操作:
set<int> s(v.begin(), v.end());
答案 2 :(得分:1)
尝试:
copy(v.begin(), v.end(),inserter(kk, kk.end() ));
// ^^^^^^^^ You need a real iterator.
答案 3 :(得分:0)
您需要初始化迭代器。
set<int>::iterator itr = kk.end();