我写了下面的代码来排序列表的元素及其工作正常(不使用sort函数)。 我只是想知道我是否可以使用列表理解来减少行数。 如果可以的话,请提供建议。
#include <iostream>
#include <vector>
#include <list>
template < template < class, class > class V, class T, class A >
void erase_value(V<T, A>& v, const T& t)
{
typename V<T,A>::iterator s = v.begin();
while (s != v.end()) {
if ((*s) == t) { v.erase(s); break; }
++s;
}
}
template < typename T >
void print_all(T begin, T end)
{
for (; begin != end; ++begin) {
std::cout << *begin << " ";
}
std::cout << std::endl;
}
template < typename T >
void print_all(const T& array)
{
for (auto i : array) {
std::cout << i << " ";
}
std::cout << std::endl;
}
int main(int argc, char** argv)
{
std::vector<std::string> strings {"123","321","ABC"};
std::list<int> ints {123,321,5332};
print_all(strings);
print_all(ints);
erase_value(strings, std::string("123"));
erase_value(ints, 123);
print_all(strings.begin(), strings.end());
print_all(ints.begin(), ints.end());
return 0;
}