作者Arton0306 (Ar藤)
看板C_and_CPP
標題[問題] std::sort??
時間Thu Feb 23 14:20:16 2012
test.cpp 檔如下
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <vector>
bool cmp(int x , int y )
{
return x < y;
}
int main()
{
std::vector<int> test;
test.push_back( 1 );
test.push_back( 3 );
test.push_back( 2 );
sort( test.begin(), test.end(), cmp );
std::min( 1,2 );
return 0;
}
這一段 可以用
g++ test.cpp
gcc 4.4.0
gcc 4.5.2
這兩個都可以過
但奇怪的是sort沒加std::
不知道為什麼還能過 但min就一定要加std::
請問sort不是在std namespace中是刻意設計的嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.192.162.252
※ 編輯: Arton0306 來自: 203.192.162.252 (02/23 14:29)
推 alongalone:也許在別的standard library也有定義這個function..XD 02/23 20:28
推 scwg: test.begin() 回傳 std::vector<int>::iterator 在 std:: 02/24 06:43
推 scwg: 底下, C++ resolving 會因此將 std::sort 納入考慮 02/24 06:44
推 LPH66:就是所謂的 Koenig lookup 02/24 19:50
→ iamstudent:ADL對operator有其方便,不過看起來也會帶來一些危險 02/24 20:42
→ iamstudent:簡單說就是參數使用到的namespace也會被納入考量 02/24 20:47
→ iamstudent:所以operator可以不用給namespace也能用 02/24 20:48
→ iamstudent:但是可能因此產生危險,去使用到不對的namespace之函數 02/24 20:49
→ Arton0306:了解了 感謝各位! 02/27 01:36