c++ - 标准对初始化

标签 c++ standard-library std-pair

这是我第一次结对工作,完全一头雾水。 如何初始化一对插入到map中?
我应该为此包含一些标准库吗?

#include <string>
#include <map>
using namespace std;
class Roads
{  
 public:  
  map< pair<string,string>, int > Road_map; 
  void AddRoad( string s, string d )
       { int b = 2 ; Road_map.insert( pair<s,d>, b) ; }  //pair<s,d> is wrong here.

 };  

最佳答案

你可以使用std::make_pair:

Road_map[make_pair(s, d)] = b;

或者,您可以像这样构造一个std::pair:

Road_map[pair<string,string>(s,d)] = b;

std::make_pair 方法使您不必命名 sd 的类型。

请注意,此处合适的函数是 operator[] 而不是 insertstd::map::insert 接受一个参数,它是一个 std::pair 包含您要插入的键和值。你必须这样做:

Road_map.insert(pair<const pair<string,string>, int>(make_pair(s, d), b);

你可以用 typedef 让它更漂亮一点:

typedef map<pair<string,string>, int> map_type;
Road_map.insert(map_type::value_type(map_type::key_type(s, d), b));

关于c++ - 标准对初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084919/

相关文章:

scala - Scalas Product.productIterator 应该做什么?

java - 谁在 Java 中实现操作系统接口(interface)?

c++ - 我如何将 std::pair 声明为 friend 以便它看到私有(private)默认构造函数

c++ - 如何在 C++ 中访问对?

c++ - STL 对比较 - 第一个元素

c++ - 在不违反信息隐藏的情况下重载流插入?

c++ - 分配给被移动的 std::function 是否合法

c++ - 有 C++ 标准库 ifdef 或 ifndef 预处理器指令吗?

c++ - 从函数 C++ 返回 float 组

c++ - 使用圆/C++中的正方形的边长来计算圆的面积