std::map<long long, std::unique_ptr<A>> listOf1;
std::map<long long, std::unique_ptr<A>> listOf2;
Run Code Online (Sandbox Code Playgroud)
如何将listOf1添加到listOf2?可能它很棘手,因为值是unique_ptr.Normall解决方案:
listOf2.insert(listOf1.begin(), listOf1.end());
Run Code Online (Sandbox Code Playgroud)
不起作用并给出错误
严重级代码描述项目文件行源抑制状态错误C2280'std :: pair :: pair(const std :: pair&)':尝试引用已删除的函数c:\ program files(x86)\ microsoft visual studio 14.0\vc\include\xmemory0 737 Build
我怎样才能返回std::vector从这个operator+()?
#include <iostream>
#include <vector>
#include <type_traits>
#include <algorithm>
#include <utility>
template<typename> struct is_std_vector : std::false_type {};
template<typename T, typename A> struct is_std_vector<std::vector<T, A>> : std::true_type {};
template <typename T>
std::enable_if_t<is_std_vector<std::decay_t<T>>::value>
operator+(T&& vec1, T&& vec2)
{
for (int i = 0; i < vec2.size(); ++i)
vec1.emplace_back(std::forward<int>(vec2.at(i)));
return vec1;
}
int main()
{
std::vector<int> vec1{ 1,2,3,4,5 };
std::vector<int> vec2{ 2,3,4,5,6 };
std::vector<int> vecResult;
vecResult = std::move(vec1) + std::move(vec2);
for (const auto& itr : vecResult)
std::cout << itr …Run Code Online (Sandbox Code Playgroud)