我编写了一个模板函数来展平向量的两级嵌套向量。然而,第二级向量可以是另一个向量,unique_ptr 到向量,或shared_ptr 到向量。
例如:
std::vector<std::unique_ptr<std::vector<int>>> f1;
std::vector<std::shared_ptr<std::vector<int>>> f2;
std::vector<std::vector<int>> f3;
std::vector<std::unique_ptr<std::vector<std::string>>> f4;
std::vector<std::shared_ptr<std::vector<std::string>>> f5;
std::vector<std::vector<std::string>> f6;
Run Code Online (Sandbox Code Playgroud)
我写了这段代码,可以在 coliru 上查看
#include <vector>
#include <string>
#include <algorithm>
#include <memory>
#include <iostream>
#include <sstream>
template<typename T>
const T* to_pointer(const T& e) {
return &e;
}
template<typename T>
const T* to_pointer(const std::unique_ptr<T>& e) {
return e.get();
}
template<typename T>
const T* to_pointer(const std::shared_ptr<T>& e) {
return e.get();
}
template <typename T, typename K,
typename = typename std::enable_if<
std::is_same<K, std::unique_ptr<std::vector<T>>>::value or
std::is_same<K, std::shared_ptr<std::vector<T>>>::value or …Run Code Online (Sandbox Code Playgroud)