我有excel表格的数据,我想得到Levenshtein他们之间的距离.我已经尝试导出为文本,从脚本(php)读入,运行Levenshtein(计算Levenshtein距离),再次将其保存为excel.
但我正在寻找一种以编程方式计算VBA中的Levenshtein距离的方法.我该怎么做呢?
在以下代码中:
int count(){
static int n(5);
n = n + 1;
return n;
}
Run Code Online (Sandbox Code Playgroud)
n在第一次调用函数时,变量仅实例化一次.
应该有一个标志或其他东西,所以它只将变量初始化一次..我试着从gcc查看生成的汇编代码,但没有任何线索.
编译器如何处理这个?
我有以下代码
#define myfunc(a,b) myfunc(do_a(a), do_b(b))
void myfunc(int a, int b)
{
do_blah(a,b);
}
int main()
{
int x = 6, y = 7;
myfunc(x,y);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望预处理器只在调用时扩展函数myfunc.预处理后所需的代码如下所示:
void myfunc(int a, int b)
{
do_blah(a,b);
}
int main()
{
int x = 6, y = 7;
myfunc(do_a(x),do_b(y));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是函数定义也像这样扩展
void myfunc(do_a(int a), do_b(int b))
{
do_blah(a,b);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法只在我们扩展函数调用时才进行宏扩展?我尝试了很多解决方案,似乎不可能,但我希望有人看到这样的情况......
注意:请不要告诉我重命名宏或函数名称:D
Update1:谢谢你的帮助.但我只能改变宏的定义,我无法改变它的位置,我也无法改变函数的实现.
以下代码正常工作:
file1.cpp
//global variable
int g_myvar1 = 5;
Run Code Online (Sandbox Code Playgroud)
file2.cpp
int myfunc()
{
extern int g_myvar1;
g_myvar1++
}
Run Code Online (Sandbox Code Playgroud)
如果file1.cpp如下,我该怎么做file2.cpp:
file1.cpp
namespace myns
{
//global variable
int g_myvar1 = 5;
}
Run Code Online (Sandbox Code Playgroud)
注1,以下内容给出了GCC 4.7"无效使用限定名称"的编译错误.我试过'使用命名空间'也没有运气.
int myfunc()
{
extern int myns::g_myvar1;
g_myvar1++
}
Run Code Online (Sandbox Code Playgroud)
注2,以下工作,但我正在寻找唯一的局部变量定义.
namespace myns
{
//global variable
extern int g_myvar1;
}
int myfunc()
{
myns::g_myvar1++
}
Run Code Online (Sandbox Code Playgroud) 以下代码
#include <iostream>
#include <new>
#include <cstring>
#include <type_traits>
template<typename T>
void is_pod(char* c)
{
cout << "Type " << c;
if(std::is_pod<T>::value)
::std::cout << " is POD" << endl;
else
::std::cout << " is not!" << endl;
}
#define CHECK_TYPE(ty) ::is_pod<ty>(#ty)
struct POD_Parent{};
struct POD_Child : public POD_Parent{int y;};
struct POD_Child2 {int x; POD_Parent y; POD_Child ssd;};
int main()
{
CHECK_TYPE(POD_Parent);
CHECK_TYPE(POD_Child);
CHECK_TYPE(POD_Child2);
Run Code Online (Sandbox Code Playgroud)
给出以下结果:哪个很奇怪!
Type POD_Parent is POD
Type POD_Child is not!
Type POD_Child2 is POD
Run Code Online (Sandbox Code Playgroud)
POD_Child怎么不是POD?!和POD_Child2是POD?!!
请注意,我使用MinGW编译它(使用选项-std = c …
我在库中有这个代码:
class Parent
{
//some data and functions
};
void myfunc(Parent& ref);
Run Code Online (Sandbox Code Playgroud)
我想在我的应用程序中执行此代码:
class Child : public Parent
{
// some other data and functions
void dostuff()
{
myfunc(*this);
}
};
Run Code Online (Sandbox Code Playgroud)
通过*这是安全的吗?(没有切片,没有复制,......)最好像这样调用myfunc:
myfunc( * ((Parent*)this) )
Run Code Online (Sandbox Code Playgroud)
请注意,我无法控制myfunc内部发生的事情,在某些情况下我甚至不知道里面发生了什么.
我多次使用pass-parent-by-pointer并且我习惯了它,但之前从未使用过传递父对象.
在我的工作中,我处理不同的微控制器,微处理器和DSP处理器.其中许多都有24位寄存器和计数器.
我知道如何使用它们,这不是我的问题.
我的问题是为什么他们有24位注册!为什么不把它变成32位?据我所知,这不是大小问题,因为寄存器已经是32位,但最大为0xFFFFFF.
这样可以更容易地实现硬件吗?更快的计算?或者只是"嗯,让24位寄存器让程序员的工作变得更加困难"?
我看到网站http://panopticlick.eff.org/收集有关您的浏览器的信息,这使您独一无二,即使没有cookie或IP跟踪.
我的问题:你如何使用javascript查看此信息?
我看到了这段代码
const volatile int * volatile * const X;
Run Code Online (Sandbox Code Playgroud)
但我无法理解第二个*意味着什么.
我明白那个
const volatile int*volatile const X;
表示易失性const数据的volatile整数指针.
STL有deque实现,Boost deque实现 ; 但是它们都使用STL方式的序列容器(使用分配器进行动态分配).
我正在寻找一个可靠,快速和静态分配的deque实现.看起来像这样:
template<typename T, unsigned int S>
class StaticDeque
{
T m_elements[S];
};
Run Code Online (Sandbox Code Playgroud)
所以要静态分配所有元素.
注1:我已经有了基于STL的解决方案(使用静态分配向量和双端队列数据的自定义分配器),但我正在寻找更好的解决方案(更短的执行时间).
注2:我需要静态分配内存,因为我处理内存中预定义(快速访问)区域中的数据.所以对象将被声明为:#pragma DATA_SECTION("fast_memory") StaticDeque<int, 10> payloads;
我正在开发一个库,它提供了一些耗时的服务.我需要每个API有两个版本,一个用于同步函数调用,另一个用于异步.
库用户应决定使用哪个版本,服务结果可能对继续系统操作(同步调用)至关重要.可能需要在不同的工作线程中执行相同的操作,因为不需要继续(异步调用).
这种方法有什么问题?
有没有更好的方法?
是否有流行的库为同一API提供同步/异步(不使用外部事件或线程)?
以下是我要提供的示例:
enum StuffStatus
{
SUCCEED,
FAILED,
STILL_RUNNING
};
class IServiceCallback
{
public:
void lengthyStuffCallback(StuffStatus status);
};
class MyServiceClass
{
public:
StuffStatus doSomeLengthStuff(IServiceCallback* callback)
{
if( callback == NULL ) // user wants sync. call
{
// do all operations in caller context
return SUCCEED;
}else{
// save the callback, queue the request in a separate worker thread.
// and after the worker thread finishes the job it calls callback->lengthyStuffCallback(SUCCEED) from its context.
return STILL_RUNNING;
} …Run Code Online (Sandbox Code Playgroud) 由于Rainbow表的引入,并且仅使用散列密码(例如:MD5)来存储数据库中的密码并不是最好的安全方式.
当人们谈论盐渍哈希时,总是以这种方式使用它hash(password . salt)甚至是hash(hash(password) . salt).
我不知道为什么要使用salt,并为每个密码添加额外的条目来存储盐?为什么我们不使用hash(hash(password)),甚至hash(hash(hash(password)))?
放盐更安全吗?还是只是感觉更复杂?