pstade::oven::at(n)
#include <assert.h> #include <pstade/oven/at.hpp> int main(){ namespace oven = pstade::oven; int array[] = {0, 1, 2, 3, 4}; assert( (array|oven::at(3)) == array[3] ); return 0; }
内部の動作としては、
*(boost::begin(range)+n);
こんな感じ。
std::list の様に要素数でアクセスが出来ないコンテナにもアクセスできるのかと思ってやってみましたが。
std::list<int> array; array += 0, 1, 2, 3, 4, 5, 6, 7; // std::list<int>::iterator に + 出来ないのでコンパイルエラー assert( (array|oven::at(3)) == (3) ); // 直接やってみても無理だった auto it = array.begin(); int value = *(it + 3);
どうやら、std::list
にょろーん。
まぁ、std::string とかでは問題なく使うことが出来るので使い勝手はよさそうです。
std::string str("THIS IS IT"); assert((str|oven::at(3)) == 'S' );
[pstade]
ver 1.04.3