我正在尝试编写一个简单的通用函数来迭代容器元素.每个元素都转换为std::string(无论如何)并存储在另一个地方.基本版本是微不足道的:
template<class Container>
void ContainerWork(const Container& c)
{
for(const auto& elem : c) {
/* convert to string and store*/
}
}
Run Code Online (Sandbox Code Playgroud)
然后有必要为值类型std::string和代码转换为容器的容器添加特化:
template<typename T, template<typename, typename> class Container, class Allocator>
void ContainerWork(Container<T, Allocator> c)
{
for(const T& elem : c) {
/* convert to string and store*/
}
}
template<template<typename, typename> class Container, class Allocator>
void ContainerWork(Container<std::string, Allocator> c)
{
for(const std::string& elem : c) {
/* frame elem in quotes*/
}
}
Run Code Online (Sandbox Code Playgroud)
它的伟大工程,但现在我只能使用测序容器(vector …