小编Fra*_*ank的帖子

如何确定普通话的Levenshtein距离?

我们正在开发一个系统,使用UTF-8,UTF-16和UTF-32 Unicode字符标准对50多种国际语言进行模糊匹配.到目前为止,我们已经能够使用Levenshtein距离来检测德语Unicode扩展字符单词的拼写错误.

我们希望扩展这个系统来处理用Unicode表示的普通话中文表意文字.我们如何在相似的汉字之间进行Levenshtein距离计算?

c++ unicode edit-distance cjk levenshtein-distance

13
推荐指数
1
解决办法
2136
查看次数

如何让Valgrind调试器逐步完成程序

早上好,我正在尝试使用Valgrind调试器来完成一个程序.

我的valgrind命令行是 valgrind -tool memcheck --leak-check=full --db-enable=yes ./MatchUpAcurate.exe.

我在Centos Linux 5.5版上使用valgrind-3.5.0和gdb版本7,0.1-23.el5_5.2.

当valgrind提出问题Attach to Debugger时,我输入Yes.然后,valgrind调试器返回:4428: return new tuple2<int,A>(2, i++, p->next());

当我尝试使用gdb步骤或继续命令时,valgrind说

[New Thread 0x410fd10 (LWP 6548] Cannot find user-level thread for LWP 6551: generic error.

当我尝试valgrind --single-step=yes在valgrind命令行上使用调试器选项时,valgriind说Bad option aborting.

任何valgrind用户都能告诉我如何单步执行C++源代码或继续完成程序吗?谢谢.

c++ valgrind

11
推荐指数
2
解决办法
1万
查看次数

如何随机删除SQLite表中的20%的行

下午好,我们想知道如何随机删除sqlite表中20%的行,行数为15000行.我们注意到这个问题在使用SQL Server的Stack Overflow中解决了 从SQL Server表中选择n个随机行.但SQL Server脚本似乎在sqlite中无法正常运行.我们如何将SQL Server脚本转换为sqlite等效脚本?谢谢.

sqlite

7
推荐指数
2
解决办法
3143
查看次数

如何将 std::multiset 与多个比较器功能一起使用?

下午好,我有一个 C++ 类Range,它实现了operator <std::multiset<Range> ranges_type.

由于多集构造函数未指定自定义比较器函子,因此它使用std::less operator <.

但是,我需要为std::multiset ranges_type. 具体来说,我会指定第二个比较器: std::multiset<Range, PointerCompare>wherestruct PointerCompare看起来这个:

struct PointerCompare{
   bool operator()(const Range& a, const Range& b) const {
         return (a.mPtr == b.mPtr)
   }
Run Code Online (Sandbox Code Playgroud)

是否可以std:multiset与多个比较器功能一起使用或是否有解决方法?谢谢

该类Range看起来像这样:

class Range { 
     public:   
         explicit Range(int item){ 
            mLow = item;
            mHigh = item;
            mPtr  = 0;
         }
         Range(int low, int high, char* ptr = 0,char* mapptr = 0){ 
            mLow = low; …
Run Code Online (Sandbox Code Playgroud)

c++ stl visual-c++

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

std::multimap::equal_range 的时间复杂度

下午好,我想知道 的时间复杂度std::multimap::equal_range是多少?是 Big-O(n) 还是 BIG-0(log n)。我记得读过std::multimap::erase“被删除的序列长度的对数加线性时间”的时间复杂度。< http://frank.mtsu.edu/~csjudy/STL/Multimap.html >

c++ complexity-theory stl

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

使用Windows C++ API创建任意大小的文件

我想使用Windows C/C++ API创建任意大小的文件.我正在使用具有32位虚拟地址内存空间的Windows XP Service Pack 2.我熟悉CreateFile.

然而,CreateFile没有大小arument,我想传递一个size参数的原因是允许我创建内存映射文件,允许用户访问预定大小的数据结构.你能否告诉我正确的Windows C/C++ API函数,它允许我创建一个预定大小的arcoitrary文件?谢谢

c c++ createfile

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

FlushViewOfFile(Windows)和msync(Linux)的时间消耗

早上好,

我们感兴趣的是时间消耗FlushViewOfFilemsync.引用UnmapViewOfFile文档:

为了在发生电源故障或系统崩溃时将数据丢失的风险降至最低,应用程序应使用该FlushViewOfFile功能显式刷新已修改的页面.

FlushViewOfFile()msync()昂贵的运营?我们要问的原因是,在我们的应用程序中,我们可能不需要在系统崩溃时将数据丢失的风险降至最低.

谢谢,

c++ linux windows

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

是否可以从FILE_FLAG_SEQUENTIAL_SCAN动态更改为FILE_FLAG_RANDOM_ACCESS?

下午好,我们正在使用Windows和Linux的内存映射文件API构建Windows/LINUX重复数据删除器的原型.我们的重复数据删除器首先对要删除的所有数据库记录进行顺序扫描.因此,在我们对要删除的数据库记录的初始顺序扫描期间,我们将标志FILE_FLAG_SEQUENTIAL_SCAN传递给Windows API CreateFile.完成重复数据删除过程的第一部分后,我们尝试使用Windows内存映射API随机访问数据.此时,使用Windows C++ API,是否可以动态更改为FILE_FLAG_RANDOM_ACCESS模式?

In Linux, we are are able to do this with the following excerpt of code, 
  MapPtr = (char*)mmap((void *)BaseMapPtr ,mappedlength,PROT_READ, 
            MAP_PRIVATE,  hFile,baseoff );
                    if (MapPtr == MAP_FAILED){
                        perror("mmap");
                        throw cException(ERR_MEMORYMAPPING,TempFileName);
                    }
 madvise(MapPtr,mappedlength,MADV_RANDOM);
Run Code Online (Sandbox Code Playgroud)

我们是否在我们的重复数据删除过程的随机访问阶段使用FILE_FLAG_SEQUENTIAL_SCAN在Windows中支付罚款.谢谢.

c++ linux windows

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

使用gcc 4.1.2版仿真is_pointer

我想知道是否有可能在Centos 5.5版上的gcc 4.1.2上模拟boost,tr1 is_pointer功能.如果有可能,我会欢迎有关如何做到这一点的建议?

c++ linux gcc

2
推荐指数
1
解决办法
207
查看次数

为什么Linux msync返回"无法分配内存"?是否可以修复此错误代码?

下午好,我们正在为Centos Linux Release x86_32和Microsoft Windows构建原型重复数据删除器.原型的一部分是MemoryMappedFile程序,它使用1800元素缓存.对于Centos Linux 5.5,我们调用msync来同步文件和内存映射.在过去的几周里,msync一直运行正常.今天,msync和perror("msync")正在返回"无法分配内存".为什么Centos Linux版本5.5 x86_32 msync返回"无法分配内存"?是否可以在Centos Linux 5.5 x86_32上修复"无法分配内存"错误.谢谢.内存映射文件程序代码的摘录如下所示:

        typedef std::multimap<char *,Range>::const_iterator I;  
    std::pair<I,I> b = mmultimap.equal_range(TmpPrevMapPtr); 
         for (I i=b.first; i != b.second; ++i){ 
    std::deque<Range>::iterator iter;
    iter = std::lower_bound(ranges_type.begin(),ranges_type.end(),i->second);
              if (iter != ranges_type.end() && !(i->second < *iter)){
        sz1 = ranges_type.size();
                        ranges_type.erase(iter);
        sz2 = ranges_type.size();
    }
    }
    erasecount = mmultimap.erase(TmpPrevMapPtr); 
    #if defined(__windows)
    retval = FlushViewOfFile(TmpPrevMapPtr, mappedlength);
    retval =    UnmapViewOfFile(TmpPrevMapPtr);            
    #elif defined(__unix)
         retval = msync(TmpPrevMapPtr,   mappedlength, MS_SYNC);    
    if (retval == -1){                                        
       perror("msync");                                       
         }                                                       
         retval = munmap(TmpPrevMapPtr,  mappedlength);
    if …
Run Code Online (Sandbox Code Playgroud)

c++ linux

2
推荐指数
1
解决办法
1144
查看次数