草庐IT

c++ - 如何使用 c++ 将字符串散列为 int?

我必须编写自己的哈希函数。如果我只想制作一个简单的哈希函数,将字符串中的每个字母映射到一个数值(即a=1,b=2,c=3,...),有没有办法可以在一个字符串,而不必先将其转换为c字符串来查看每个单独的字符?有没有更有效的哈希字符串方法? 最佳答案 根据个人经验,我知道这很有效并且产生了良好的分布。(抄袭自http://www.cse.yorku.ca/~oz/hash.html):djb2这个算法(k=33)是danbernstein多年前在comp.lang.c中首次报道的。该算法的另一个版本(现在被bernstein青睐)使用

c# - 在 c# 中将 int 添加到 char 以将其 ascii 值向上移动(就像在 c++ 中一样)

在c++中,这段代码可以工作:charc='a';intr=2;c+=r;这与c='c'的作用相同。如何在c#中做同样的事情? 最佳答案 在将其添加到c之前将其转换为charcharc='a';intr=2;c+=(char)r; 关于c#-在c#中将int添加到char以将其ascii值向上移动(就像在c++中一样),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1058321

c# - 在 c# 中将 int 添加到 char 以将其 ascii 值向上移动(就像在 c++ 中一样)

在c++中,这段代码可以工作:charc='a';intr=2;c+=r;这与c='c'的作用相同。如何在c#中做同样的事情? 最佳答案 在将其添加到c之前将其转换为charcharc='a';intr=2;c+=(char)r; 关于c#-在c#中将int添加到char以将其ascii值向上移动(就像在c++中一样),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1058321

c++ - 错误 : called object type 'int' is not a function or function pointer

我在这里写了一个快速排序:voidswap(int&a,int&b);intmid(intlo,inthi);//Myquicksortimplementationvoidsort(intvec[],intlo,inthi){intmid;if(hi>lo){inti=lo+1;intj=hi;intp=mid(lo,hi);swap(vec[lo],vec[p]);mid=vec[lo];while(i=mid);swap(vec[i],vec[j]);}}i++;swap(vec[lo],vec[i]);sort(vec,lo,i);sort(vec,j,hi);}}voidswa

c++ - 错误 : called object type 'int' is not a function or function pointer

我在这里写了一个快速排序:voidswap(int&a,int&b);intmid(intlo,inthi);//Myquicksortimplementationvoidsort(intvec[],intlo,inthi){intmid;if(hi>lo){inti=lo+1;intj=hi;intp=mid(lo,hi);swap(vec[lo],vec[p]);mid=vec[lo];while(i=mid);swap(vec[i],vec[j]);}}i++;swap(vec[lo],vec[i]);sort(vec,lo,i);sort(vec,j,hi);}}voidswa

c++ - 是否有理由在跨平台代码中使用 C++11 的 std::int_fast32_t 或 std::int_fast16_t 而不是 int ?

在C++11中,我们提供了固定宽度的整数类型,例如std::int32_t和std::int64_t,它们是可选的,因此不是最适合编写跨平台代码。然而,我们也得到了这些类型的非可选变体:例如“快速”变体,例如std::int_fast32_t和std::int_fast64_t,以及“最小尺寸”变体,例如std::int_least32_t,它们的大小都至少是指定的位数。我正在编写的代码是基于C++11的跨平台库的一部分,它支持在最流行的Unix/Windows/Mac编译器上进行编译。现在出现的一个问题是,用C++11固定宽度整数类型替换代码中现有的整数类型是否有优势。使用std::

c++ - 是否有理由在跨平台代码中使用 C++11 的 std::int_fast32_t 或 std::int_fast16_t 而不是 int ?

在C++11中,我们提供了固定宽度的整数类型,例如std::int32_t和std::int64_t,它们是可选的,因此不是最适合编写跨平台代码。然而,我们也得到了这些类型的非可选变体:例如“快速”变体,例如std::int_fast32_t和std::int_fast64_t,以及“最小尺寸”变体,例如std::int_least32_t,它们的大小都至少是指定的位数。我正在编写的代码是基于C++11的跨平台库的一部分,它支持在最流行的Unix/Windows/Mac编译器上进行编译。现在出现的一个问题是,用C++11固定宽度整数类型替换代码中现有的整数类型是否有优势。使用std::

c++ - Swig python - c++ 如何使用 int8_t 类型

我有一个以8位整数为参数的C函数int8_tfoo(int8_tx);我想使用swig接口(interface)从我的python代码中调用此函数,但python中不存在int8_t类型。为了拥有这种类型,存在一个名为numpy的python模块。即使使用它,我也无法进行2通信。您知道是否有任何方法可以在SWIG接口(interface)中定义这种类型以便能够从python中使用它??int8_t只是一个例子......我必须对从8位到64位的有符号/无符号执行相同的操作提前致谢,S. 最佳答案 在您的SWIG接口(interfac

c++ - Swig python - c++ 如何使用 int8_t 类型

我有一个以8位整数为参数的C函数int8_tfoo(int8_tx);我想使用swig接口(interface)从我的python代码中调用此函数,但python中不存在int8_t类型。为了拥有这种类型,存在一个名为numpy的python模块。即使使用它,我也无法进行2通信。您知道是否有任何方法可以在SWIG接口(interface)中定义这种类型以便能够从python中使用它??int8_t只是一个例子......我必须对从8位到64位的有符号/无符号执行相同的操作提前致谢,S. 最佳答案 在您的SWIG接口(interfac

C++ 序列化/反序列化 std::map<int,int> 从/到文件

我有一个std::map。我想知道我是否可以使用fwrite将其写入文件(也可以从文件中读取),或者我是否需要分别写入/读取每个值。我希望因为没什么特别的,这可能是可能的。 最佳答案 使用boost::serialization在一行中进行序列化。标题:boost/serialization/map.hpp代码示例#include#include#includ#include#include#includeintmain(){std::mapmap={{1,2},{2,1}};std::stringstreamss;boost::a