是否有原生C++替代 C "memcmp"?
Is there a native C++ alternative to the C's "memcmp"?
c++或Boost是否有一个函数可以像C的memcmp一样比较两个内存块?
我试过谷歌,但我只得到"memcmp"功能。
如果你想要一个既能处理指针又能处理STL迭代器的函数,可以看看<algorithm>
中的std::equal
。
我认为std::equal
是做std::memcmp
的c++方式(这确实仍然是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 a1n";
}
if (std::equal (vec.begin (), vec.end (), p1) == false) {
std::cout << "memory of p1 != memory of vecn";
}
}
输出memory of p1 == memory of a1
memory of p1 != memory of vec
您也可以在c++中使用memcmp
。在c++中也是原生的。
所有你需要做的是,包括<cstring>
,然后使用全限定名称std::memcmp
而不是memcmp
。这是因为它在std
命名空间中,就像所有其他标准库函数和类一样。
memcmp
是c++标准库的一部分,在<cstring>
中可用。由于您的要求是比较2块内存(处理原始内存),您必须使用memcmp
或库中的其他函数。
如果你不想处理内存,那么使用c++容器来抽象内存管理。那么你要处理的就是对象!
使用memcmp。这是一个完全合法的c++函数
memcmp是c++标准库的一部分。
相关文章:
- 我应该使用什么来代替void作为变体中的替代类型之一
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- C++11 中不同类型的对象的 std::array 的替代方案
- boost::spirit::karma 替代生成器,带有 boost::variant 由字符串和字符串别名组成
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- C++:当所有条目都保证是唯一时,替代 std::map
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 在 boost::qi 中使用过多的替代运算符会导致分段错误
- 在文件中写入而不是在 c++ 中使用 "<<" 的替代方法?
- Memcpy C++替代方案
- EOF有更安全的替代方案吗?它在我的情况下不起作用
- 替代在python中制作邻接列表与图形问题的字典?(如 C++ 中的 vector<vector<int&g
- Visual Studio 中的 sqrtf 函数替代
- 使用类型id运算符的最佳替代方法
- 是否可以将不可复制的成员用作使对象不可复制的替代方法?
- 列表视图项的替代颜色
- 关于如何在具有单个参数的变体构造中选择替代方案?
- Winapi-WM_CLOSE的替代方案
- malloc_trim(0) 的替代项
- 是否有原生C++替代 C "memcmp"?