我不知道如何調用lower_bound
與zip_iterator
。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說, 「不能從 '詮釋' 轉換參數1 '常量的std :: _ Vector_iterator < _Myvec> &'」(加幾十個其他的事情了相同的錯誤),但是它與一個不明確的boost :: tuple構造函數有關,而與給定的lambda沒有關係。
我在做什麼錯?
沒有。只是試圖確定。這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