C,复制设置为向量

我需要复制std :: set到std :: vector:

std::set <double> input;
input.insert(5);
input.insert(6);

std::vector <double> output;
std::copy(input.begin(), input.end(), output.begin()); //Error: Vector iterator not dereferencable

哪里有问题?

您需要使用back_inserter:

std::copy(input.begin(), input.end(), std::back_inserter(output));

std :: copy不会将元素添加到要插入的容器中:it can not;它只有一个迭代器到容器中。因此,如果您将输出迭代器直接传递给std :: copy,则必须确保它指向的范围至少足够大以容纳输入范围。

std :: back_inserter创建一个输出迭代器,为每个元素的容器调用push_back,因此每个元素都被插入到容器中。或者,您可以在std :: vector中创建足够数量的元素来保存要复制的范围:

std::vector<double> output(input.size());
std::copy(input.begin(), input.end(), output.begin());

或者,您可以使用std :: vector范围构造函数:

std::vector<double> output(input.begin(), input.end()); 
http://stackoverflow.com/questions/5034211/c-copy-set-to-vector

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:C,复制设置为向量