首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于地图和make_pair的奇怪有关问题

2013-11-18 
关于map和make_pair的奇怪问题编译如下的代码时,为何会提示make_pair identifier not found?//#include i

关于map和make_pair的奇怪问题
编译如下的代码时,为何会提示make_pair identifier not found?


//
#include <iostream>
#include <map>
#include <string>
#include <utility>

using std::pair;
using std::map;
using std::string;
using std::cin;
using std::cout;
using std::endl;

int main()
{
// count number of times each word occurs in the input
map<string, int> word_count; // empty map from string to int
// insert default initialized element with key Anna; then assign 1 to its value
//word_count["Anna"]=1;
string word;
cout<<"\nInput as many words as you wish:\n";
while(cin>>word)
++word_count[word];

cin.clear();

make_pair("SunGohan",3);
        getchar();


map make_pair
[解决办法]
即使添加了也会编译不过,还要这么改:
make_pair(string("SunGohan"),3);
[解决办法]
引用:
Quote: 引用:

C++ Primer只是示范一下,using的用法,不是叫你无论何时都这么用!

额,我学到associative containers那一章,书还没有提到
using namespcae std;
这样的用法

最好不要用using namespcae std;特别是把这句放在头文件中,任何引入命名空间都不要出现在头文件中。
在头文件中,直接在使用的地方加std::就可以了,或者少量的using std::XXX。
在实现文件中,可以视需要,比较频繁的几个用using std::XXX,或者在具体的函数定义内使用这句using namespcae std;,其余的直接在用到的地方加std::就好了。否则会使得命名空间无效,重新造成命名冲突的。比如你自己顶一个max模板,引入using namespace std试试就知道了。
using namespace std;
template<typename T>
T max(T a,T b){
return a>b?a:b;
}
你在VS下调用这个试试就知道了(VC6没这个问题,太老了不符合标准)

总之using namespace(包括自己写的命名空间和std)自己写程序测试的时候随便用,工程里谨慎点。因为以后团队里代码不是你一个人写的,你不会知道别人写了什么。

热点排行