C++算法与泛型算法(algorithm、numeric)

2020-02-20 12:00:58王冬梅
vector<int> vec{ 1,2,3,4,5 };
int sz = 4;
 
//在vec中寻找比sz大的数
auto wc=find_if(vec.begin(), vec.end(), 
 [sz](const int &a) {return a > sz; }); //查找比sz大的
auto wc2=find_if(vec.begin(), vec.end(), 
		[sz](const int &a) {return a < sz; }); //查找比sz小的
 
cout << *wc << endl; //5
cout << *wc2 << endl; //3

for_each()

用来遍历一个集合 参数:参数12是一个容器的迭代器范围。参数3lambda表达式
vector<int> vec{ 1,2,3,4,5 };
 
for_each(vec.begin(), vec.end(), 
 [](const int&s) {cout << s << " "; });
cout << endl;
vector<string> vec{ "ABC","AB","A","sd" };
 
for_each(vec.begin(), vec.end(), 
 [](const string&s) {cout << s << " "; });
cout << endl;

transform()

参数:参数12为输入序列。参数3为目的位置 该算法对输入序列中每个元素调用课调用对象,并将结果写到目的位置 下面使用transform算法和一个lambda表达式来将vector中的每个负数替换为绝对值。因为参数3位vec.begin(),所以就是将vec的全部元素取绝对值然后再写入vec的开头
vector<int> vec{ -1,-2,-3,4 };
//将vec的数全部取绝对值
transform(vec.begin(), vec.end(), vec.begin(),
		[](int i) {return i < 0 ? -i : i; });
 
for (auto v = vec.begin() ; v != vec.end(); ++v)
	cout <<*v << endl;

到此这篇关于C++算法与泛型算法(algorithm、numeric)的文章就介绍到这了,更多相关C++ algorithm numeric内容请搜素易采站长站以前的文章或下面相关文章,希望大家以后多多支持易采站长站!