cpp algorithm

今天在https://codility.com/ 上面测试了几道题,我发现用C++比用C 方便多了。因为如果用C++,我们可以使用STL 的结构及算法,但是使用C的话就要自己实现了。

毕业之后 就没有专门做过算法题了,今天使用起来有些生硬,费事不少。现在将一些常用结构整理一下,作为自己的知识库储存在大脑里,以后可以信手拈来。

一下提供一些C转C++的结构,以及C++常用算法。

1. 常用函数

  get max integer

// numeric_limits example
#include <iostream>     // std::cout
#include <limits>       // std::numeric_limits

int main () {
  std::cout << std::boolalpha;
  std::cout << "Minimum value for int: " << std::numeric_limits<int>::min() << '\n';
  std::cout << "Maximum value for int: " << std::numeric_limits<int>::max() << '\n';
  std::cout << "int is signed: " << std::numeric_limits<int>::is_signed << '\n';
  std::cout << "Non-sign bits in int: " << std::numeric_limits<int>::digits << '\n';
  std::cout << "int has infinity: " << std::numeric_limits<int>::has_infinity << '\n';
  return 0;
}

min, max

// min example
#include <iostream>     // std::cout
#include <algorithm>    // std::min

int main () {
  std::cout << "min(1,2)==" << std::min(1,2) << '\n';
  std::cout << "min(2,1)==" << std::min(2,1) << '\n';
  std::cout << "min('a','z')==" << std::min('a','z') << '\n';
  std::cout << "min(3.14,2.72)==" << std::min(3.14,2.72) << '\n';
  return 0;
}

sort

// sort algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::sort
#include <vector>       // std::vector

bool myfunction (int i,int j) { return (i<j); }

struct myclass {
  bool operator() (int i,int j) { return (i<j);}
} myobject;

int main () {
  int myints[] = {32,71,12,45,26,80,53,33};
  std::vector<int> myvector (myints, myints+8);               // 32 71 12 45 26 80 53 33

  // using default comparison (operator <):
  std::sort (myvector.begin(), myvector.begin()+4);           //(12 32 45 71)26 80 53 33

  // using function as comp
  std::sort (myvector.begin()+4, myvector.end(), myfunction); // 12 32 45 71(26 33 53 80)

  // using object as comp
  std::sort (myvector.begin(), myvector.end(), myobject);     //(12 26 32 33 45 53 71 80)

  // print out content:
  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

std::count

// count algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::count
#include <vector>       // std::vector

int main () {
  // counting elements in array:
  int myints[] = {10,20,30,30,20,10,10,20};   // 8 elements
  int mycount = std::count (myints, myints+8, 10);
  std::cout << "10 appears " << mycount << " times.\n";

  // counting elements in container:
  std::vector<int> myvector (myints, myints+8);
  mycount = std::count (myvector.begin(), myvector.end(), 20);
  std::cout << "20 appears " << mycount  << " times.\n";

  return 0;
}

 

std::for_each

// for_each example
#include <iostream>     // std::cout
#include <algorithm>    // std::for_each
#include <vector>       // std::vector

void myfunction (int i) {  // function:
  std::cout << ' ' << i;
}

struct myclass {           // function object type:
  void operator() (int i) {std::cout << ' ' << i;}
} myobject;

int main () {
  std::vector<int> myvector;
  myvector.push_back(10);
  myvector.push_back(20);
  myvector.push_back(30);

  std::cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myfunction);
  std::cout << '\n';

  // or:
  std::cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myobject);
  std::cout << '\n';

  return 0;
}

 

 

2. C 的array转 C++  vector

vector 的构造函数如下所示,

 // constructors used in the same order as described above:
  std::vector<int> first;                                // empty vector of ints
  std::vector<int> second (4,100);                       // four ints with value 100
  std::vector<int> third (second.begin(),second.end());  // iterating through second
  std::vector<int> fourth (third);                       // a copy of third

  // the iterator constructor can also be used to construct from arrays:
  int myints[] = {16,2,77,29};
  std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) )

 

int A[] = {1, 2, 3, 4, 5}

std::vector<int>  vec(A, A+sizeouf(A)/sizeof(int))   //

 

3. 常用算法

1)动态规划例子

最长公共子序列:给定两个数组A和B,求其最长公共子序列。

最长递增子序列:给定数组A, 求其最长递增子序列。

 

转载于:https://www.cnblogs.com/harrysun/p/4543081.html

Algorithm Essentials 是指算法的基础知识,它是计算机科学的重要组成部分。算法是解决问题的步骤和方法的描述,而 Algorithm Essentials CPP 指的是在 C++ 编程语言实现算法的基础要素。 在 C++ ,算法的实现通常使用函数模板,并通过 STL(标准模板库)提供的容器和算法库来实现。C++ 的算法库提供了丰富的算法实现,例如排序、搜索、合并等。对于算法的应用,C++ 提供了类似于迭代器的概念,使得算法可以适用于不同类型的容器。因此,Algorithm Essentials CPP 是指在 C++ 使用函数模板和 STL 容器与算法库实现基础算法的要素。 学习 Algorithm Essentials CPP 首先需要了解 C++ 的基本语法和特性,特别是函数模板和 STL 的使用方法。然后,需要学习算法的基本概念和常见算法的实现方式,例如排序算法、搜索算法和图算法等。掌握这些基础知识后,就可以开始使用 C++ 的函数模板和 STL 容器与算法库来实现算法了。 Algorithm Essentials CPP 的掌握对于解决实际问题和提高程序效率非常重要。通过学习算法的基础知识,可以编写出更高效、更健壮的代码,并且可以更好地理解和使用现有的算法库。此外,Algorithm Essentials CPP 也是学习其他高级算法和数据结构的基础,为进一步深入研究计算机科学领域打下基础。 总而言之,Algorithm Essentials CPP 是在 C++ 编程语言实现算法的基础知识和要素。通过学习这些基础知识,可以提高程序效率、解决实际问题,并为进一步学习计算机科学领域奠定基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值