📅  最后修改于: 2023-12-03 15:29:42.159000             🧑  作者: Mango
C++ STL提供了许多方便快捷的数组算法。在此,我们将介绍其中一些算法:all_of,any_of,none_of,copy_n和iota。
all_of
算法用于检查一个区间中的所有元素是否都满足特定条件。如果满足,all_of
函数将返回true
;否则,返回false
。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec {1, 2, 3, 4, 5};
if (std::all_of(vec.begin(), vec.end(), [](int i){ return i > 0; })) {
std::cout << "All elements are greater than 0\n";
}
else {
std::cout << "Not all elements are greater than 0\n";
}
return 0;
}
在上述示例中,all_of
函数用于检查vectorvec
中的所有元素是否都大于零,因此输出All elements are greater than 0
。
any_of
算法用于检查一个区间中是否存在至少一个元素满足特定条件。如果有,any_of
函数将返回true
;否则,返回false
。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec {-1, -2, -3, 4, 5};
if (std::any_of(vec.begin(), vec.end(), [](int i){ return i > 0; })) {
std::cout << "At least one element is greater than 0\n";
}
else {
std::cout << "No element is greater than 0\n";
}
return 0;
}
在上述示例中,any_of
函数用于检查vectorvec
中是否存在至少一个元素大于零,因此输出At least one element is greater than 0
。
none_of
算法用于检查一个区间中是否不存在任何一个元素满足特定条件。如果没有,none_of
函数将返回true
;否则,返回false
。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec {-1, -2, -3, -4, -5};
if (std::none_of(vec.begin(), vec.end(), [](int i){ return i > 0; })) {
std::cout << "No element is greater than 0\n";
}
else {
std::cout << "At least one element is greater than 0\n";
}
return 0;
}
在上述示例中,none_of
函数用于检查vectorvec
中是否不存在任何一个元素大于零,因此输出No element is greater than 0
。
copy_n
算法用于从一个区间中复制指定数量的元素到另一个区间中。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec1 {1, 2, 3, 4, 5};
std::vector<int> vec2(3);
std::copy_n(vec1.begin(), 3, vec2.begin());
std::cout << "vec2: ";
for (int i : vec2) {
std::cout << i << " ";
}
std::cout << "\n";
return 0;
}
在上述示例中,copy_n
函数用于从vectorvec1
中复制三个元素到vectorvec2
中,因此输出vec2: 1 2 3
。
iota
算法用于生成一个序列,并将其存储到指定的区间中。
#include <algorithm>
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec(5);
std::iota(vec.begin(), vec.end(), 1);
std::cout << "vec: ";
for (int i : vec) {
std::cout << i << " ";
}
std::cout << "\n";
return 0;
}
在上述示例中,iota
函数用于生成从1到5的序列,并将其存储到vectorvec
中,因此输出vec: 1 2 3 4 5
。