它需要一定的時間來移動迭代器串的元素在以下幾點:迭代的std :: string元素
std::string str // string of size 100 MB
std::string::iterator iter = str.begin();
std::advance(iter, str.size()-1);
,將採取一定的時間,如通過索引搜索?
char c = str[str.size()-1];
它需要一定的時間來移動迭代器串的元素在以下幾點:迭代的std :: string元素
std::string str // string of size 100 MB
std::string::iterator iter = str.begin();
std::advance(iter, str.size()-1);
,將採取一定的時間,如通過索引搜索?
char c = str[str.size()-1];
是的,這是正確的。這是由C++標準(§24.3,迭代器操作)保證:
由於只有隨機訪問迭代 提供+和 - 運算符,庫 提供了兩個函數模板 提前和距離。這些函數 模板使用+和 - 用於隨機 訪問迭代器(因此,它們的定時時間爲 );
只有當你真的想要變異時才使用string :: iterator。它會觸發寫入時複製,這會導致配置結果混亂。 – pmr 2010-06-21 18:51:12