📜  C ++ STL中的数组算法(all_of,any_of,none_of,copy_n和iota)(1)

📅  最后修改于: 2023-12-03 15:29:42.159000             🧑  作者: Mango

C++ STL中的数组算法

C++ STL提供了许多方便快捷的数组算法。在此,我们将介绍其中一些算法:all_of,any_of,none_of,copy_n和iota。

all_of

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算法用于检查一个区间中是否存在至少一个元素满足特定条件。如果有,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算法用于检查一个区间中是否不存在任何一个元素满足特定条件。如果没有,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

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

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