1. c++哈希后比较字符串效率更高
#include <iostream>
#include <string>
#include <functional>
int main() {
std::string str1 = "hello";
std::string str2 = "world";
// 使用 std::hash 对字符串进行哈希
std::hash<std::string> hasher;
size_t hash1 = hasher(str1);
size_t hash2 = hasher(str2);
// 比较哈希值
if (hash1 == hash2) {
std::cout << "The two strings have the same hash value." << std::endl;
} else {
std::cout << "The two strings have different hash values." << std::endl;
}
return 0;
}
2. 通过按位操作实现更高效的算数
eg: 向下取64的倍数:
x & 0xFFFFFFC0
3. 按需使用write()
和fwrite()
写文件
fwrite和write都是用于将数据写入文件的函数。它们的主要区别在于它们所属的编程语言和操作系统。fwrite()
会有一个额外缓冲,当满足条件(例如缓冲区满)时才真正调用系统write()
,可以减少系统调用频率,适用于小数据频繁写入;然而,当数据量大时,缓冲的存在反而影响效率,这时可直接调用系统write()
。
fwrite是C语言中的函数,用于将一块内存中的数据写入文件中,可以写入多个数据类型。它的语法如下:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
其中,ptr是指向要写入的数据的指针,size是每个数据项的大小,count是要写入的数据项数,stream是指向要写入的文件的指针。下面是一个使用fwrite将一个整数写入文件的例子:
int num = 42;
FILE *fp = fopen("file.txt", "wb");
fwrite(&num, sizeof(int), 1, fp);
fclose(fp);
write是UNIX系统中的系统调用,用于将一块内存中的数据写入文件中,只能写入字符型数据。它的语法如下:
ssize_t write(int fd, const void *buf, size_t count);
其中,fd是文件描述符,buf是指向要写入的数据的指针,count是要写入的字节数。下面是一个使用write将一个字符串写入文件的例子:
char *str = "Hello, world!";
int fd = open("file.txt", O_WRONLY | O_CREAT, 0644);
write(fd, str, strlen(str));
close(fd);