gpt4 book ai didi

c++ - 如何使用带有指针 vector 的 STL 算法

转载 作者:IT老高 更新时间:2023-10-28 23:12:59 26 4
gpt4 key购买 nike

我有一个不属于容器的指针 vector 。如何在指针的目标上使用算法。我尝试使用 boost 的 ptr_vector,但它会在超出范围时尝试删除指针。

下面是一些需要工作的代码:

vector<int*> myValues;
// ... myValues is populated
bool consistent = count(myValues.begin(), myValues.end(), myValues.front()) == myValues.size();
auto v = consistent ? myValues.front() : accumulate(myValues.begin(), myValues.end(), 0) / myValues.size();
fill(myValues.begin(), myValues.end(), v);
// etc.

我意识到 for 循环会起作用,但这发生在很多地方,所以某种一元适配器?我找不到一个。提前致谢!

最佳答案

您可以使用 Boost Indirect Iterator .取消引用时(使用 operator*() ),它会应用 一个额外的 取消引用,因此您最终会得到迭代器引用的指针所指向的值。更多信息,您还可以查看this question about a dereference iterator .

这是一个简单的例子:

std::vector<int*> vec;

vec.push_back(new int(1));
vec.push_back(new int(2));

std::copy(boost::make_indirect_iterator(vec.begin()),
boost::make_indirect_iterator(vec.end()),
std::ostream_iterator<int>(std::cout, " ")); // Prints 1 2

关于c++ - 如何使用带有指针 vector 的 STL 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/833289/

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