如何编写适用于矢量或映射迭代器的自定义算法

Joh*_*don 2 c++ stl map

我想编写自己的算法(只是一个真正的函数),它需要一系列迭代器.如果迭代器来自映射,我想使用数据(迭代器 - >第二)值.如果迭代器像向量或列表一样"正常",我只想使用解除引用的迭代器值.

Lol*_*4t0 5

我认为,价值获取的想法就在这里,但你可以c++11在没有结构的情况下实现它,只使用函数:

template <typename T> 
const T& get(const T& t)
{
    return t;
}

template <typename T, typename V>
const V& get(const std::pair<T,V>& t)
{
    return t.second;
}


int main()
{
    std::vector<int> v = {1};
    std::cout << get(*v.begin());

    std::cout << "\n----\n";

    std::map<int, std::string> m;
    m.insert(std::make_pair(0, "sss"));
    std::cout << get(*m.cbegin());
}
Run Code Online (Sandbox Code Playgroud)