主要原因是标准库不是作为一个单一的连贯的整体开发的,而是包含了当时流行的几个库。
迭代器是“标准模板库”中的一个概念,它是标准容器、迭代器和算法库的基础。字符串和本地化库来自其他来源,这些来源不使用迭代器。因为迭代器非常有用,所以我们认为将迭代器改造成这些库是值得的,但不能完全改变库的接口以在任何地方使用迭代器。
&foo.back()+1
或
&foo[0] + foo.size()
比…更易读
&foo[foo.size()-1]+1
. 也不需要将字符串复制到向量中即可使用
scan_is
scan_not
; 像这样的事情应该可以做到:
const char* str_begin = foo_str.c_str();
const char* str_end = str_begin + foo_str.length();
const char* num_begin = myctype.scan_is(ctype<char>::digit, str_begin, str_end);
const char* num_end = myctype.scan_not(ctype<char>::digit, num_begin, str_end);
std::string number(num_begin, num_end); // or `vector` if you really want