gpt4 book ai didi

c++ - 复制到 vector 给出段错误

转载 作者:太空狗 更新时间:2023-10-29 23:31:02 56 4
gpt4 key购买 nike

我正在尝试将 vector 数据从 sample 复制到 Y,如下所示

std::map<std::string, std::vector<double > >sample;
std::map<std::string, std::vector<double > >::iterator it1=sample.begin(), end1=sample.end();
std::vector<double> Y;

我正在使用以下代码:

 while (it1 != end1) {
std::copy(it1->second.begin(), it1->second.end(), std::ostream_iterator<double>(std::cout, " "));
++it1;
}

它打印输出正常,但是当我用下面的代码替换上面的 std::copy block 时,我得到了一个段错误。

 while (it1 != end1) {
std::copy(it1->second.begin(), it1->second.end(), Y.end());
++it1;
}

我只想将 it1->second 的内容复制到 Y。为什么它不起作用,我该如何解决?

最佳答案

显然,您想将对象插入 vector 中。然而,std::copy() 只是获取传递的迭代器并写入它们。 begin()end() 迭代器获得的迭代器不做任何插入。你想要使用的是这样的:

std::copy(it1->second.begin(), it1->second.end(), std::back_inserter(Y));

std::back_inserter() 函数模板是迭代器的工厂函数,在其参数上使用 push_back() 来追加对象。

关于c++ - 复制到 vector 给出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10377917/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com