Nei*_*l G 12 c++ lambda boost stl c++11
我有一个不是容器所有的指针向量.如何在指针的目标上使用算法.我尝试使用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.
Run Code Online (Sandbox Code Playgroud)
我意识到for循环可以工作,但这发生在一堆地方,所以某种一元的适配器?我找不到一个.提前致谢!
Luc*_*lle 19
您可以使用Boost Indirect Iterator.当取消引用(with operator*())时,它会应用额外的解除引用,因此最终得到迭代器引用的指针指向的值.有关更多信息,您还可以查看有关取消引用迭代器的此问题.
这是一个简单的例子:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1813 次 |
| 最近记录: |