gpt4 book ai didi

c++ - 我可以使用插入函数将值插入指针 vector 吗?

转载 作者:行者123 更新时间:2023-11-28 06:35:47 26 4
gpt4 key购买 nike

假设 Foo 是任何类。

Foo f[5];

std::vector<Foo*> v;

我可以使用 for 循环语句将元素插入到指针 vector 中:

for (size_t i = 0; i < 5; i++)
v.push_back(&f[i]);

是否可以使用 std::vector::insert() 函数插入它们,为什么不呢?我试过几次都失败了:

v.insert(v.end(), &f[0], &f[5]); // error

最佳答案

如果您的意思是,只需调用一次 insert,那么就不行 - 可以复制一个范围,在需要时执行类型转换,但不能应用任意转换,例如获取每个元素的地址.

你可以使用std::transform:

std::transform(std::begin(f), std::end(f),
std::back_inserter(v),
[](Foo & f) {return &f;});

尽管这可能不如简单循环那么清晰,尤其是当您使用新式语法时

for (Foo & foo : f) {
v.push_back(&foo);
}

关于c++ - 我可以使用插入函数将值插入指针 vector 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26807044/

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