C++ Primer(第五版) 10.5.1--10.6节练习

    xiaoxiao2022-07-05  168

    10.38    输入迭代器:只读,不写,单遍扫描,只递增;支持前置和后置++,==,!=,*,->                                                                           输出迭代器:只写,不读,单遍扫描,只递增;支持前置和后置++, *                                                                                                   前向迭代器:可读写;多遍扫描,只能递增;支持所有输入输出迭代器的操作                                                                                     双向迭代器:可读写;多遍扫描,可递增递减;支持所有前向迭代器的操作,加上前置和后置的--                                                     随机访问迭代器:可读写,多遍扫描,支持全部迭代器运算,即除前四种迭代器操作外,加上关系运算符(<, >, <=, >=),加减运算(+, +=, -, -=),减法(-,得到两个迭代器的距离),下标运算符

    10.39       list属于双向迭代器,vector属于随机访问迭代器。

    10.40    copy的前两个参数至少是输入迭代器,第三个参数至少是输出迭代器;reverse两个参数至少是双向迭代器;unique两个参数至少是前向迭代器。

    10.41    replace:将[beg, end)间的old_val替换为new_val                                                                                                                                 replace_if:将[beg, end)间满足谓词pred的元素替换为new_val                                                                                                           replace_copy:将[beg, end)间的元素拷贝到dest,并把old_val替换为new_val                                                                                   replace_copy_if:将[beg, end)间的元素拷贝到dest,并把满足谓词pred的元素替换为new_val   

    10.42    sort和unique使用list的成员函数版本

    #include <algorithm> #include <list> using namespace std; void elimDups(list<string> &words) { for (auto w : words) cout << w << " "; cout << endl; words.sort(); for (auto w : words) cout << w << " "; cout << endl; words.unique(); for (auto w : words) cout << w << " "; cout << endl; } int main() { list<string> slist = {"the", "quick", "red", "fox", "jumps", "over", "the", "slow", "red", "turtle"}; elimDups(slist); return 0; }

     

    最新回复(0)