小编You*_*usf的帖子

Levenshtein在VBA的距离

我有excel表格的数据,我想得到Levenshtein他们之间的距离.我已经尝试导出为文本,从脚本(php)读入,运行Levenshtein(计算Levenshtein距离),再次将其保存为excel.

但我正在寻找一种以编程方式计算VBA中的Levenshtein距离的方法.我该怎么做呢?

excel vba excel-vba levenshtein-distance

55
推荐指数
4
解决办法
5万
查看次数

函数内部的静态变量如何工作?

在以下代码中:

int count(){
    static int n(5);
    n = n + 1;
    return n;
}
Run Code Online (Sandbox Code Playgroud)

n在第一次调用函数时,变量仅实例化一次.

应该有一个标志或其他东西,所以它只将变量初始化一次..我试着从gcc查看生成的汇编代码,但没有任何线索.

编译器如何处理这个?

c c++ compiler-construction static

15
推荐指数
2
解决办法
2887
查看次数

宏和功能相同的名称

我有以下代码

#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:​​谢谢你的帮助.但我只能改变宏的定义,我无法改变它的位置,我也无法改变函数的实现.

c macros c-preprocessor

9
推荐指数
2
解决办法
6975
查看次数

命名空间内的全局变量的extern局部变量

以下代码正常工作:

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)

c++ namespaces extern

8
推荐指数
1
解决办法
8284
查看次数

Visual Studio 2008中的POD

以下代码

#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 …

c++ pod visual-studio-2008

7
推荐指数
1
解决办法
168
查看次数

通过引用传递父对象

我在库中有这个代码:

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并且我习惯了它,但之前从未使用过传递父对象.

c++ oop inheritance pass-by-reference

6
推荐指数
2
解决办法
3941
查看次数

为什么24位寄存器?

在我的工作中,我处理不同的微控制器,微处理器和DSP处理器.其中许多都有24位寄存器和计数器.

我知道如何使用它们,这不是我的问题.

我的问题是为什么他们有24位注册!为什么不把它变成32位?据我所知,这不是大小问题,因为寄存器已经是32位,但最大为0xFFFFFF.

这样可以更容易地实现硬件吗?更快的计算?或者只是"嗯,让24位寄存器让程序员的工作变得更加困难"?

microcontroller microprocessors 24-bit

5
推荐指数
1
解决办法
531
查看次数

如何收集类似于panopticlick.eff.org的信息

我看到网站http://panopticlick.eff.org/收集有关您的浏览器的信息,这使您独一无二,即使没有cookie或IP跟踪.

我的问题:你如何使用javascript查看此信息?

cookies privacy user-tracking

5
推荐指数
1
解决办法
5478
查看次数

volatile和const指针

我看到了这段代码

const volatile int * volatile * const X;
Run Code Online (Sandbox Code Playgroud)

但我无法理解第二个*意味着什么.

我明白那个

const volatile int*volatile const X;

表示易失性const数据的volatile整数指针.

c pointers const volatile

5
推荐指数
1
解决办法
1040
查看次数

C++静态分配双端队列实现

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;

c++ embedded containers templates stl

5
推荐指数
1
解决办法
872
查看次数

同步和异步API

我正在开发一个库,它提供了一些耗时的服务.我需要每个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)

c++ api asynchronous synchronous

4
推荐指数
1
解决办法
1845
查看次数

hash(hash())vs salted hash

由于Rainbow表的引入,并且仅使用散列密码(例如:MD5)来存储数据库中的密码并不是最好的安全方式.

当人们谈论盐渍哈希时,总是以这种方式使用它hash(password . salt)甚至是hash(hash(password) . salt).

我不知道为什么要使用salt,并为每个密码添加额外的条目来存储盐?为什么我们不使用hash(hash(password)),甚至hash(hash(hash(password)))

放盐更安全吗?还是只是感觉更复杂?

security hash salt password-hash

3
推荐指数
3
解决办法
2304
查看次数