STL泛型算法总结
泛型算法只是依賴于迭代器的操作,而不是依賴于容器
泛型算法可以分為3大類:
下面的vec和vec2代表相同類型的容器
1.只讀算法:只允許讀取其輸入范圍內的元素,而不改變元素
find(vec.cbegin(),vec.cend(),k)
查找算法:前兩個參數表示元素范圍的迭代器,第三個參數k表示要查找的元素,查找成功則返回等于第一個元素的迭代器,查找失敗返回尾后指針
accumulate(vec.cbegin(),vec.cend(),0)
求和算法:前兩個參數表示元素范圍的迭代器,第三個參數表示和的初始值,返回該類型的參數范圍內的和,可以為int,string等
equal(vec.cbegin(),vec.cend(),vec2.cbegin())
比較算法:將第一個范圍內的元素和第二個序列中的元素比較,如果對應元素都相等,返回true,否則返回false,這里默認第二個序列的元素數>=第一個范圍內的元素數
2.寫容器元素算法:將元素寫入輸入范圍
fill(vec.cbegin(),vec.cend(),0)
表示迭代器范圍內的值都被置為0(假設vec存的是int型)
fill_n(vec.begin(),vec.size(),0)
表示從指定迭代器 ?vec.begin() ?開始以后的vec.size()個元素的值都被置為0(假設vec存的是int型)
注:上面的寫算法不允許在空容器上調用,即容器中有幾個元素,寫算法才能寫幾個元素,只能修改,不能添加,如果想要添加只能使用插入迭代器(下篇會介紹)
copy(vec.cbegin(),vec.cend(),vec2.cbegin())拷貝算法:將迭代器范圍內的元素拷貝到vec2容器中,這里默認第二個容器的空間能夠存儲該迭代器范圍內的元素
replace(vec.cbegin(),vec.cend(),before,after)
替換算法:將容器迭代器范圍內的元素中 所有為before的元素替換為after的元素,before和after分別為存儲類型的具體數值
replace_copy(vec.cbegin(),vec.cend(),back_inserter(vec2),before,after)
替換算法:將容器迭代器范圍內的元素中 所有為before的元素替換為after的元素,并插入到vec2中,before和after分別為存儲類型的具體數值
3.重排容器元素算法
sort(vec.cbegin(),vec.cend())
排序算法:將迭代器范圍內的元素按照定義的“<”來進行排序
unique(vec.cbegin(),vec.cend())
排序算法:將迭代器范圍內的元素按照unique的標準庫算法進行排序,使得不重復的元素出現在開始的位置,并且返回一個指向最后一個不重復元素之后的迭代器
?
注:要真正刪除容器中的元素,必須使用容器操作,泛型算法只是依賴于迭代器的,向容器中插入元素可以不必使用容器操作,可以使用插入迭代器操作。
轉載于:https://www.cnblogs.com/runninglzw/p/4751220.html
總結
- 上一篇: linux中nodejs后台运行工具fo
- 下一篇: 查出数字字符字段中非数字字符的记录