我有一個std::map
,我想定義一個返回修改值的迭代器。通常,一個std::map<int,double>::iterator
迭代std::pair<int,double>
,我想同樣的行爲,只是雙倍值乘以一個常數。如何遍歷修改後的std :: map值?
我boost::transform_iterator
嘗試過,但它不會編譯:
#include <map>
#include <boost/iterator/transform_iterator.hpp>
#include <boost/functional.hpp>
typedef std::map<int,double> Map;
Map m;
m[100] = 2.24;
typedef boost::binder2nd< std::multiplies<double> > Function;
typedef boost::transform_iterator<Function,
Map::value_type*> MultiplyIter;
MultiplyIter begin =
boost::make_transform_iterator(m.begin(),
Function(std::multiplies<double>(), 4));
// now want to similarly create an end iterator
// and then iterate over the modified map
的錯誤是:
error: conversion from 'boost
::transform_iterator<
boost::binder2nd<multiplies<double> >, gen_map<int, double>::iterator
, boost::use_default, boost::use_default
>' to non-scalar type 'boost::transform_iterator<
boost::binder2nd<multiplies<double> >, pair<const int, double> *
, boost::use_default, boost::use_default
>' requested
什麼是gen_map
?我真的需要嗎?
我適應了transform_iterator
教程代碼here寫這個代碼...
這是很好的提升使這成爲可能在所有的,但我希望有很多可用簡單的解決方案... – Frank 2010-05-01 20:51:25