STL-算法 修改性算法:
for_each() generate()
copy() generate_n()
copy_backwards() replace()
transform() replace_if()
merge() replace_copy()
swap_ranges() replace_copy_if()
fill()
fill_n()
for_each() 速度快 不灵活 只有一个区间的时候用
transform() 速度慢 非常灵活 两个或者两个区间只能用transform
#include<iostream> #include<vector> #include<algorithm> using namespace std; // 这个参数必须是引用传递,必须要修改 void square(int & elem) { elem = elem * elem; } // transfrom 的要求 参数的传递不需要传引用,传值就行 ,但是要有返回值 int square2(int elem) { return elem * elem; } int main() { vector<int> a; vector<int> b; for (int i = 1; i <= 9; i++) { a.push_back(i); b.push_back(i); } cout << "向量a:" << endl; for (vector<int>::iterator iter = a.begin(); iter != a.end(); iter++) cout << *iter << ' '; cout << endl; for_each(a.begin(), a.end(), square);// 速度快,传引用 for (vector<int>::iterator iter = a.begin(); iter != a.end(); iter++) cout << *iter << ' '; cout << endl; cout << "向量b:" << endl; for (vector<int>::iterator iter = b.begin(); iter != b.end(); iter++) cout << *iter << ' '; cout << endl; transform(b.begin(), b.end(), b.begin(), square2);// 速度慢,传值 for (vector<int>::iterator iter = b.begin(); iter != b.end(); iter++) cout << *iter << ' '; cout << endl; // system("pause"); return 0; }
时间: 2024-10-08 07:01:51