我想编写我自己的算法(实际上只是一个函数),它采用一系列迭代器。如果迭代器来自 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/