【发布时间】:2010-10-24 09:56:22
【问题描述】:
我有一个不属于容器的指针向量。如何在指针的目标上使用算法。我尝试使用 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 循环会起作用,但这发生在很多地方,所以某种一元适配器?我找不到一个。提前致谢!
【问题讨论】:
-
如果您在问题中使用尚未批准的未来 C++ 标准的功能,您将限制您获得的答案。不清楚您的问题是关于当前标准库、Boost 的使用还是 C++0x 的新特性。
-
看起来 v 应该是整数的平均值,但随后复制行尝试复制到 v,因此 v 必须是指针或迭代器。
-
哦,是的,最后一行是错误的......我的意思是写“填充”而不是“复制”。
-
Neil:关于标签,我不确定标准库(它是适配器吗?)、boost(它是迭代器吗?)或C++0x(它是新的 lambdas 吗?)。但是,您是对的,在我的示例代码中使用 auto 可能是不必要的。
标签: c++ stl boost lambda c++11