2
我需要一个迭代器到std::string
中的特定字符,而不需要从头开始循环。迭代器到std :: string中的特定字符
这是最好的方法吗?
std::string s("abcdefg...");
size_t id = 5;
std::string::const_iterator it = s.begin();
std::advance(it, id - 1);
我需要一个迭代器到std::string
中的特定字符,而不需要从头开始循环。迭代器到std :: string中的特定字符
这是最好的方法吗?
std::string s("abcdefg...");
size_t id = 5;
std::string::const_iterator it = s.begin();
std::advance(it, id - 1);
你也可以简单地做:
std::string::const_iterator it = s.begin() + (id-1);
虽然它应该有更多或更少的std::advance
相同的性能,因为如果it
是随机访问迭代器,advance
使用operator+
(否则将求助于循环;这发生在例如list
迭代器中)。
由于std::string
的迭代器是随机访问,你可以直接做到这一点:
std::string::const_iterator it = s.begin() + (id-1);
(这是std::advance
最终扩展为随机访问迭代器)。
我忘了的std :: string分配是连续的... Grazie! – 2011-12-16 10:23:11