c++ - 如何编写适用于 vector 或 map 迭代器的自定义算法

标签 c++ stl map

我想编写我自己的算法(实际上只是一个函数),它采用一系列迭代器。如果迭代器来自 map ,我想使用数据 (iterator->second) 值。如果迭代器像 vector 或列表一样“正常”,我只想使用取消引用的迭代器值。

最佳答案

我认为,value-getter 的想法就在这里,但你可以在没有 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());
}

关于c++ - 如何编写适用于 vector 或 map 迭代器的自定义算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11993575/

相关文章:

c++ - std::vector<> 使用不初始化基元和转发 construct_back 的 resize() 派生

c++ - 我可以毫无异常(exception)地将 std::accumulate 与易出错的操作一起使用吗?

STL - 将 istream 中的一行单词转换为 vector 的最简单方法?

python - 为什么 Go 的 map 迭代顺序在打印时会发生变化?

map - 存储解构映射供以后使用

haskell - 如何使用map函数在haskell中将元组列表分为两个列表?

c++ - CPU 缓存感知 C++/C 编程

c++ - string.find() 错误地返回 true

c++ - std::unordered_map 分配、插入和释放时间

c++ - 英特尔标准库 (C++)