如何在没有C ++ 11的情况下使用std :: begin和std :: end?

时间:2015-09-09 19:39:07

标签: c++ c++11 stl g++ std

我正在尝试编写将为POJ编译的代码。 POJ没有使用C ++ 11,所以我不能使用真正基本的STL函数,如std::to_stringstd::beginstd::end。我环顾四周,发现another StackOverflow question询问std::to_string。为了使用std::to_string命令编译g++ myfile.cpp代码,用户建议使用此补丁,该补丁非常有效:

namespace patch
{
    template < typename T > std::string to_string( const T& n )
    {
        std::ostringstream stm ;
        stm << n ;
        return stm.str() ;
    }
}

我想对std::beginstd::endstd::stoi做同样的事情,但我不知道该怎么做。我对STL很不熟悉。我只是希望我的C ++ 11代码能够使用MS-VC ++ 6.0或G ++ 进行编译而不需要任何标志等。我该怎么做?

1 个答案:

答案 0 :(得分:5)

非常简单。 例如,这里是std :: begin:

char* reverseCopy(char* destination, const char* source, int num)
{
    char placeHolder;
    for (int j=0; j<=num; j++)
    {
        strcpy(destination,source);
    }

    for (int i=0; i<num; num--)
    {
        placeHolder = destination[num];
        destination[i]=placeHolder;
    }
    destination[num]='\0';
    return destination;
}