과 함께 lower_bound
을 호출하는 방법을 알 수 없습니다.zip_iterator 및 lower_bound
이 컴파일되지 않습니다 :
#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는이를 위해 (플러스 수십 다른 일 " 'const를 표준 : _ Vector_iterator < _Myvec이> &를'에 'INT'에서 매개 변수 1 변환 할 수 없습니다"라는 같은 에러). 그러나 주어진 람다가 아니라 애매한 boost :: tuple 생성자와 관련이있다. 내가 잘못 뭐하는 거지
?
아니요. 그냥 그것을 시도했는지 확인하십시오. 이 compiels 잘 :'std :: vector> ok; auto it = std :: lower_bound (ok.begin(), ok.end(), 123, [] (const std :: pair & p, const int v) -> bool {return p.first
Gabriel