小编jog*_*pan的帖子

如何用虚函数确定sizeof类?

这是一个功课问题.对于以下代码,

#include <iostream>
using namespace std;

class A
{
public:
    virtual void f(){}
};

class B
{
public:
    virtual void f2(){}
};

class C: public A, public B
{
public: 
    virtual void f3(){}
};

class D: public C
{
public:
    virtual void f4(){}
};

int main()
{
    cout<<sizeof(D)<<endl;
}
Run Code Online (Sandbox Code Playgroud)

输出为:8

任何人都可以解释它是如何8字节?如果vtable实现依赖于编译器,那么在采访中我应该回答这类问题?虚拟基类怎么样?

编辑:我正在使用32位平台.

c++ sizeof vtable

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

如何实现C++"新"运算符

Class B;
B *b  = new B();       // default constructor
B *b1 = new B(10);     // constructor which takes an argument B(int x)
Run Code Online (Sandbox Code Playgroud)

但是,如果我们要编写自定义版本new,则语法为

Class B
{
  /*...*/
  static void* operator new(size_t size);
}
Run Code Online (Sandbox Code Playgroud)

如何将语句new B()转换为函数调用 operator new(sizeof(B))

它如何跟踪调用哪个构造函数,即它如何区分new B()new B(int x)

new实现为C++中的宏?

c++ new-operator

6
推荐指数
1
解决办法
4939
查看次数

Wordnet编辑树结构

我正在开发一个使用Wordnet概念层次结构进行操作的应用程序.我发现数据库中缺少一些我需要的单词.是否有API或工具,或任何其他方式我可以插入新单词,编辑结构等?(我正在使用Wordnet 3.0.)

谢谢.

nlp wordnet

6
推荐指数
1
解决办法
861
查看次数

std :: string :: c_str()如何返回一个不会导致内存泄漏或未定义的c-string内容的c-string?

我正在编写一个类似于std :: string的字符串类作为家庭作业,但我无法弄清楚如何返回一个不会导致内存泄漏的c字符串,并保证保持不变直到它不存在使用时间更长.我目前有:

const char* string::c_str()
{
    char c[_size+1];
    strncpy(c,_data,_size);
    c[_size]='\0';
    return c;
}
Run Code Online (Sandbox Code Playgroud)

但是在调用之后不久就会覆盖内容.如果我进行动态分配,我会有内存泄漏,或者任何时候只能从给定的字符串中存在一个c字符串.我怎么能避免这个?

c++ memory string cstring

6
推荐指数
1
解决办法
2204
查看次数

移动构造函数和初始化列表

我想为某个类型实现移动构造函数(没有复制构造函数),该类型需要是一个值类型boost::unordered_map.我们称之为这种类型Composite.

Composite 有以下签名:

struct Base
{
  Base(..stuff, no default ctor) : initialization list {}
  Base(Base&& other) : initialization list {} 
}

struct Composite
{
  Base member;
  Composite(..stuff, no default ctor) : member(...) {}
  Composite(Composite&& other) : member(other.member) {} // <---- I want to make sure this invokes the move ctor of Base
}
Run Code Online (Sandbox Code Playgroud)

我想写这个,所以boost::unordered_map< Key , Composite >不需要复制构造函数,只需使用移动构造函数.如果可能的话,我不想Base在移动构造函数的初始化列表中使用复制构造函数Composite.

这可能吗?

c++ unordered-map initialization move-semantics c++11

6
推荐指数
1
解决办法
2191
查看次数

在Active Record Callback中验证日语字符

我有一个需要验证半宽和全宽日文字符的日文项目,半宽度允许14个字符,全宽度允许7个字符.

有没有人知道如何实现它?

现在我的模特

class Customer
   validates_length_of :name, :maximum => 14
end
Run Code Online (Sandbox Code Playgroud)

不是一个好选择

我目前正在使用ror 2.3.5可以使用全宽和半宽

ruby validation ruby-on-rails cjk rails-activerecord

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

如何将现有的C++代码移植到C++ 11

我们正在开发一个用C++开发的模块,但是考虑到新的C++ 11,我正在考虑迁移到那个.

如何进行?两者是相同的还是有一些编译器依赖?

我的软件目前支持Windows和Linux.我正在使用Microsoft Visual Studio以及GCC来构建它.

总的来说,如果有的话需要做哪些改变?

c++ architecture c++11

6
推荐指数
1
解决办法
1775
查看次数

C++大学课程

你知道在网上有C++课程的大学吗?我正在寻找类似麻省理工学院风格的在线讲座(讲义,项目和示例,作业,考试,解决方案和视频内容).

是我在麻省理工学院找到的,但是id没有视频内容.

c++

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

在python中使用后缀树

我是python的新手,我开始使用后缀树.我可以构建它们,但是当字符串变大时我遇到了内存问题.我知道它们可以用于处理大小为4 ^ 10或4 ^ 12的DNA字符串,但每当我尝试实现一种方法时,我最终会遇到内存问题.

这是我生成字符串和后缀树的代码.

import random

def get_string(length):
    string=""
    for i in range(length):
        string += random.choice("ATGC")
    return string

word=get_string(4**4)+"$"

def suffixtree(string):
    for i in xrange(len(string)):
        if tree.has_key(string[i]):
            tree[string[i]].append([string[i+1:]][0])
        else:
            tree[string[i]]=[string[i+1:]]
    return tree

tree={}
suffixtree(word)
Run Code Online (Sandbox Code Playgroud)

当我达到4**8左右时,我遇到了严重的内存问题.我对此很陌生,所以我肯定我错过了保存这些东西的东西.任何建议将不胜感激.

作为注释:我想进行字符串搜索以在非常大的字符串中查找匹配的字符串.搜索字符串匹配大小为16.因此,这将在大字符串中查找大小为16的字符串,然后移动到下一个字符串并执行另一个搜索.由于我将进行大量搜索,因此建议使用后缀树.

非常感谢

python hash suffix-tree

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

需要一个C结构解析器

假设我有一个文件system.h,其中有以下结构

typedef struct Foo {
  int count;
  uint32 world;
  Temp id;
} Foo;

typedef struct Temp {
  uint64 id;
} Temp;

Foo bar;
Run Code Online (Sandbox Code Playgroud)

现在我需要一个类似 的宏,DUMP_STRUCT(bar)它递归地打印 bar (Foo 类型)的所有成员。

是否有任何解析器/脚本(最好是在 php/python 中)可以解析 C 文件或从可执行文件中获取 dwarf 的信息并创建类似于的函数DUMP_STRUCT

php c python parsing dwarf

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