无法创建带有布尔值和矢量的地图
Not able to create map with bool and vector
我正在尝试用布尔值和向量制作一个地图,但这似乎不对,我有类似的构造函数正在工作,我只是替换了类型。
以下是错误:
error: could not convert 'result.std::map< bool, std::vector< unsigned int> >::emplace< std::pair< bool, std::vector< unsigned int, std::allocator< unsigned int> > > >(std::make_pair(_T1&&, _T2&&) [with _T1 = bool; _T2 = std::vector< unsigned int>; typename std::__decay_and_strip<_T2>::__type = std::vector< unsigned int>; typename std::__decay_and_strip<_Tp>::__type = bool](make_vec_pair(unsigned int, unsigned int)(nums.std::vector< unsigned int>::at((nums.std::vector< unsigned int>::size() - 1)))))' from 'std::pair< std::_Rb_tree_iterator<std::pair< const bool, std::vector< unsigned int> > >, bool>' to 'std::map<bool, std::vector< unsigned int> >'
法典:
std::vector<unsigned int> make_vec_pair(unsigned int num1, unsigned int num2)
{
std::vector<unsigned int> temp_vec;
temp_vec.push_back(num1);
temp_vec.push_back(num2);
return temp_vec;
}
std::map<bool,std::vector<unsigned int>> make_map_of_result(std::vector<unsigned int> nums, unsigned int sum)
{
std::map<bool,std::vector<unsigned int>> result;
std::vector<unsigned int> nums_pair;
/* process */
return result.emplace(std::make_pair(true,make_vec_pair(nums.at(i) , nums.at(i+1))));
}
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
#include <map>
int main()
{
std::map<bool, std::vector<unsigned int>> res_map;
std::vector<unsigned int> numbers {6,1,2,5,4,3};
std::sort(numbers.begin(),numbers.end())
res_map = two_num_sum_array(numbers,5);
for(auto &m:res_map)
std::cout<<m.first;
return 0;
}
另外,我正在使用下面的重载函数来打印矢量,有什么问题
for(auto &m:res_map)
std::cout<<m.first<<m.second; // m.second is vector is giving problem
std::ostream &operator << (std::ostream &out,const std::vector<unsigned int> &vec){
return std::out<<vec.at(0)<<vec.at(1);
}
更新:这有效
std::ostream &operator << (std::ostream &out,const std::vector<unsigned int> &vec){
return out<<vec.at(0)<<vec.at(1);
}
你不应该return
emplace
的结果,那应该是两行。您还可以删除std::make_pair
并删除make_vec_pair
功能。
result.emplace(true, std::vector<unsigned int>({nums.at(i), nums.at(i+1)}));
return result;
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 变量定义到C++布尔值转换
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 重载更少,则运算符返回相反的布尔值
- 如何使用 std::variant 打印地图键/值?
- 在 c++ 中,有一种方法可以创建一个包含地图作为值的树状地图?
- 将此布尔值传递给此函数的最有效方法是什么?
- 如何使地图按值C++排序
- 如何设置 c++ 类的布尔值?
- 使用 MAKEWORD / MAKEWPARAM 使用布尔值而不是布尔值
- 将 10 个线程与原子布尔值同步
- 如何在没有复制构造函数的情况下为地图设置值?
- 创建类似于布尔值的变量类型
- 布尔值向量的基于范围 for 循环
- 零点和布尔值之间的比较
- 简化对两个布尔值的 4 个 if/else 检查
- 无法创建带有布尔值和矢量的地图
- 对于完成布尔值设置为 true 后未停止的循环
- fstream / ifstream / ofstream 对象如何转换为布尔值
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?