gpt4 book ai didi

c++ - std::copy 和 std::vector 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:57 25 4
gpt4 key购买 nike

我明白为什么这会导致段错误:

#include <algorithm>
#include <vector>
using namespace std;

int main()
{
vector<int> v;
int iArr[5] = {1, 2, 3, 4, 5};
int *p = iArr;

copy(p, p+5, v.begin());

return 0;
}

但为什么这不会导致段错误?

#include <algorithm>
#include <vector>
using namespace std;

int main()
{
vector<int> v;
int iArr[5] = {1, 2, 3, 4, 5};
int *p = iArr;

v.reserve(1);
copy(p, p+5, v.begin());

return 0;
}

最佳答案

两者都是错误的,因为您正在复制到空 vector ,并且复制需要您有插入空间。它不会自行调整容器大小。您可能需要的是 back_insert_iterator 和 back_inserter:

copy(p, p+5, back_inserter(v));

关于c++ - std::copy 和 std::vector 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144822/

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