lower_bound
で呼び出す方法がわかりませんzip_iterator
。
これはコンパイルされません:
#include <boost/iterator/zip_iterator.hpp>
#include <vector>
#include <algorithm>
void main()
{
typedef int Key;
typedef double Value;
typedef boost::tuple<typename std::vector<Key>::iterator,
typename std::vector<Value>::iterator> the_iterator_tuple;
typedef boost::zip_iterator<the_iterator_tuple> the_zip_iterator;
std::vector<Key> keys_;
std::vector<Value> values_;
// Add values to keys_ and values_...
auto it = std::lower_bound(
the_zip_iterator(the_iterator_tuple(keys_.begin(), values_.begin())),
the_zip_iterator(the_iterator_tuple(keys_.end(), values_.end())),
123,
[](const the_iterator_tuple & it, const int v) -> bool { return *boost::get<0>(it) < v; }
);
// Use "it"...
}
VS2010 は、「パラメーター 1 を 'int' から 'const std::_Vector_iterator<_Myvec> &' に変換できません」(さらに、同じエラーのために数十個の他のもの) と言っていますが、あいまいな boost::tuple コンストラクターと関係があります。 、指定されたラムダではありません。
私は何を間違っていますか?