相关疑难解决方法(0)

在std :: map和std :: unordered_map之间进行选择

现在std有一个真正的哈希映射unordered_map,为什么(或何时)我还想在它实际存在的系统上使用旧的mapover unordered_map?是否有任何我无法立即看到的明显情况?

c++ hash unordered-map map c++11

130
推荐指数
5
解决办法
9万
查看次数

带有比较函数的C++ <unresolved重载函数类型>

我正在尝试实现自定义二进制搜索以运行日期向量.

我的二进制搜索功能如下:

template <typename RandomAccessIterator, typename Value, typename Comparer>
inline int binary_search(RandomAccessIterator const  first, RandomAccessIterator const  last, Value const& value, Comparer comparer)
{
    RandomAccessIterator it(std::lower_bound(first, last, value, comparer));
    if (it == last || comparer(*it, value) || comparer(value, *it))
      return distance(first,last);

    return distance(first,it);
}
Run Code Online (Sandbox Code Playgroud)

我使用的比较器定义为:

template <class T>
inline bool cmp(T lhs,T rhs)
{
  return lhs<rhs;
}
Run Code Online (Sandbox Code Playgroud)

这两个编译没有问题,但是,当我尝试使用以下代码调用binary_search函数时,我收到编译错误:

binary_search(date_list.begin(),date_list.end(),date2,cmp)
Run Code Online (Sandbox Code Playgroud)

其中date_list是包含日期的向量,date2是一个int.

确切的错误消息是:

error: no matching function for call to ?binary_search(__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, __gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >, int&, <unresolved overloaded …
Run Code Online (Sandbox Code Playgroud)

c++ comparison search templates

1
推荐指数
1
解决办法
1472
查看次数

标签 统计

c++ ×2

c++11 ×1

comparison ×1

hash ×1

map ×1

search ×1

templates ×1

unordered-map ×1