c++<algorithm>(算法库)

须知:使用前提,#include<algorithm>

排序算法

要对数据结构中的元素进行排序,可以使用该函数。sort()

eg:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
  // 创建一个存储整数的 vector,名为 numbers
  vector<int> numbers = {1, 7, 3, 5, 9, 2};

  // 对 numbers 进行数字排序
  sort(numbers.begin(), numbers.end());

  // 输出排序后的 numbers
  for (int num : numbers) {
    cout << num << "\n";
  }
  
  return 0;
}

运行结果:

如果想逆序排序的话可以:sort(numbers.rbegin(), numbers.rend());其余内容同上,有关rbegin(),和rend()可以参考rbegin和rend

搜索算法

要在 vector 中查找特定元素,你可以使用 find() 函数。

它接收三个参数:开始迭代器、结束迭代器和要查找的值。也就是说,find() 会在给定范围内查找是否存在你指定的值。

通俗一点说:

  • 开始迭代器:这是查找从哪一部分开始(通常是 vector 的开头)。
  • 结束迭代器:这是查找到哪里为止(通常是 vector 的末尾)。
  • 要查找的值:就是你想找到的那个具体数字或元素。

如果找到,find() 会返回指向该元素的迭代器;如果没找到,它会返回一个指向结束位置的迭代器(表示查找失败)。

eg:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
  // Create a vector called numbers that will store integers
  vector<int> numbers = {1, 7, 3, 5, 9, 2};

  // Search for the number 3
  auto it = find(numbers.begin(), numbers.end(), 3);

  // Check if the number 3 was found
  if (it != numbers.end()) {
    cout << "The number 3 was found!" << "\n";
  } else {
    cout << "The number 3 was not found." << "\n";
  }
  
  return 0;
}

运行结果:

特定值搜索

要搜索大于特定值的第一个元素,您可以使用以下函数:upper_bound()

eg:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
  // 创建一个存储整数的 vector,名为 numbers
  vector<int> numbers = {1, 7, 3, 5, 9, 2};

  // 对 vector 进行升序排序
  sort(numbers.begin(), numbers.end());
  
  // 在排序后的 vector 中查找第一个大于 5 的值
  auto it = upper_bound(numbers.begin(), numbers.end(), 5);
  
  cout << *it;
  
  return 0;
}

运行结果:

查找向量中的最小元素

使用函数min_element()

eg:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
  // 创建一个存储整数的 vector,名为 numbers
  vector<int> numbers = {1, 7, 3, 5, 9, 2};
 
  // 查找最小的数字
  auto it = min_element(numbers.begin(), numbers.end());
  
  cout << *it;
  
  return 0;
}

运行结果:

查找最大的元素

用max_element(),代码类似上面,把函数名改为max_element()

修改算法

复制转移

要将元素从一个 vector 复制到另一个 vector,可以使用以下函数copy()

eg:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
  // 创建一个存储整数的 vector,名为 numbers
  vector<int> numbers = {1, 7, 3, 5, 9, 2};
  
  // 创建一个名为 copiedNumbers 的 vector,大小为 6,用于存储整数
  vector<int> copiedNumbers(6);
  
  // 将 numbers 中的元素复制到 copiedNumbers 中
  copy(numbers.begin(), numbers.end(), copiedNumbers.begin()); 

  // 输出 copiedNumbers 中的元素
  for (int num : copiedNumbers) {
    cout << num << "\n";
  }
  
  return 0;
}

运行结果:

值填充 vector 中的所有元素

使用以下函数:fill()

eg:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
  // 创建一个大小为 6 的 vector,名为 numbers,用于存储整数
  vector<int> numbers(6);
  
  // 将 numbers 向量中的所有元素填充为 35
  fill(numbers.begin(), numbers.end(), 35); 

  // 输出 vector 中的所有元素
  for (int num : numbers) {
    cout << num << "\n";
  }
  
  return 0;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后天苦海谈话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值