是否有C的"memcmp"的原生C++替代品?

mal*_*yeb 10 c++ boost

C++或Boost是否有一个比较C的memcmp的两个内存块的功能?

我试过谷歌,但我只有"memcmp"功能.

Fil*_*efp 27

如果你想,它可以处理的函数指针都和STL迭代器看看std::equal<algorithm>.

我认为std::equal是C++的做法std::memcmp(它确实仍然是C++,但std::memcmp不处理迭代器对象).


#include <iostream>
#include <vector>
#include <algorithm>

int 
main (int argc, char *argv[])
{   
  int  a1[] = {1,2,3,4};
  int  a2[] = {1,9,3,5};

  int * p1  = new int[4];

  std::vector<int> vec (a2, a2+4);


  *(p1++) = 1; *(p1++) = 2;
  *(p1++) = 3; *(p1++) = 4;

  p1 -= 4;


  if (std::equal (a1, a1+4, p1)) {
    std::cout << "memory of p1 == memory of a1\n";
  }   

  if (std::equal (vec.begin (), vec.end (), p1) == false) {
    std::cout << "memory of p1 != memory of vec\n";
  }   
}   
Run Code Online (Sandbox Code Playgroud)

产量

memory of p1 == memory of a1
memory of p1 != memory of vec
Run Code Online (Sandbox Code Playgroud)


Naw*_*waz 13

您也可以memcmp在C++中使用.它在C++中也是原生的.

您需要做的就是,包括<cstring>然后使用完全限定的名称std::memcmp而不是memcmp.这是因为它在std命名空间中,就像所有其他标准库函数和类一样.

  • @ MIH1406:请证明你的目标.使用"C的东西"有什么不对?听起来你正在制定规则的规则. (5认同)
  • @ MIH1406:是的.所有这些都包含在C++标准中.他们是C++,因为他们是C. (2认同)