C++ pair的问题

#include<iostream>#include<string>#include<map>#include<utility>usingstd::cout;usings... #include<iostream>
#include<string>
#include<map>
#include<utility>
using std::cout;
using std::endl;
using std::string;
using std::map;
using std::pair;
int main(void)
{
map<string,string> name_birthday; //Find somebody's birthday by his name.
map<string,int> name_barrack; //Which barrack does the soldier in?
map<int,int> code; //Use the code to keep secret.
name_birthday["JohnSmith"]="19960213"; //Use the index to insert.
name_barrack.insert(pair<string,int>("soldier's name",2));
code.insert(make_pair(123,456));
return 0;
}

编译器报错说make_pair未定义,怎么回事?
展开
 我来答
匿名用户
2012-06-30
展开全部
code.insert(make_pair(123,456));
改为:
code.insert( std::make_pair( 123, 456 ) );
追答
实参相依查找(Argument Dependent Lookup, ADL)。
当查找一个函数调用表达式中的函数名字时,编译器也会到“包含函数调用实参的类型”的名字空间中检查。

你的代码:
使用的都是 int 类型,并不在 std 名称空间,因此需要使用 std::。

网址中的代码:
make_pair 在 std 名称空间,string 也在 std 名称空间,根据实参相依查找的特性,make_pair 可以不需要加 std::。

参考资料: 《C++ 必知必会》 条款 25

意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式