std::transform & shared_ptr

今天用到了这两个宝贝,先说std::transform

标准用法:

std::string sl = "hello";
std::transform(sl.begin(), sl.end(), sl.begin(), toupper);

linux(ubuntu9.10 gcc44 libc6)下无论 c++99 还是c++-0x -std=c++0x 都无法通过,
可通过
char ___tolower(char a)

{

    return (char)tolower(a);

}
std::string sl = "hello";
std::transform(sl.begin(), sl.end(), sl.begin(), __tolower);
或者
struct Lower{
int operator()(char c){tolower(c);}
};

std::string sl = "hello";
std::transform(sl.begin(), sl.end(), sl.begin(), Lower);
解决

shared_ptr
看到有人用到了 using namespace tr1,
这个在我的linux环境下仍然无法通过, #include <memroy> + using namespace std; + -std=c++0x可解决这个问题
(具体原因请见google)

你可能感兴趣的:(std::transform & shared_ptr)