小编Abh*_*hay的帖子

名词,动词,形容词等单独的单词列表

通常单词列表是包含所有内容的1个文件,但是可以单独下载名词列表,动词列表,形容词列表等吗?

我特意需要英语.

grammar dictionary spell-checking

27
推荐指数
5
解决办法
3万
查看次数

Redis的内存使用量比数据多10倍

我有一个小问题.

我想在redis中存储一个单词表.表现很棒.

我的方法是创建一个名为"单词"的集合,并通过'sadd'添加每个新单词.

这是一个问题,当添加一个15.9mb的文件并且包含大约一百万字时,redis-server进程消耗160mb的ram.为什么我使用10倍的内存,有没有更好的方法来解决这个问题?

提前致谢

memory performance redis

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

测试一个类是否是多态的

我们有一个子项目'commonUtils',它有许多在父项目中使用的通用代码片段.我看到的一个有趣的东西是: -

/*********************************************************************
If T is polymorphic, the compiler is required to evaluate the typeid 
stuff at runtime, and answer will be true.  If T is non-polymorphic, 
the compiler is required to evaluate the typeid stuff at compile time, 
whence answer will remain false
*********************************************************************/
template <class T> 
bool isPolymorphic() { 
   bool answer=false; 
   typeid(answer=true,T()); 
   return answer; 
}
Run Code Online (Sandbox Code Playgroud)

我相信评论并认为它是一个非常有趣的模板,虽然它没有在整个项目中使用.为了好奇,我试着像这样使用它...

class PolyBase {
public:
   virtual ~PolyBase(){}
};

class NPolyBase {
public:
   ~NPolyBase(){}
};


if (isPolymorphic<PolyBase>())
  std::cout<<"PolyBase = Polymorphic\n";
if (isPolymorphic<NPolyBase>())
  std::cout<<"NPolyBase = …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism templates typeid

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

我在哪里可以找到一个好的单词表

我正在寻找一个单词列表的文件,也是按字的类型设置的.例如,这种格式的东西

Nouns: {
    bus
    car
    deck
    elephant
    ...
}
Adjectives {
    awful
    bashful
    ...
}
Advervb {
    ...
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

dictionary words thesaurus

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

涉及私人继承的C风格的向上和向下倾斜

请考虑以下代码: -

class A {};

class B : private A {};

B* bPtr1 = new B;
// A* aPtr1 = bPtr1; // error
// A* aPtr2 = static_cast<A*>(bPtr1); // error
A* aPtr3 = (A*)bPtr1;
B* bPtr2 = (B*)aPtr3;
Run Code Online (Sandbox Code Playgroud)

C样式转换丢弃了私有继承,而隐式和static_cast失败(也dynamic_cast).为什么?如果C风格的强制转换只是一点点,那么C++强制转换是如何实现的,即它们如何知道内存占用的继承类型?

在将bPtr1转换为aPtr3之后,我将不得不再使用另一个C风格的转换向下转换为B static_cast并且dynamic_cast失败.那么,bPtr2保证是好的吗?

提前致谢

c++ inheritance casting

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

delete []提供了一个修改过的new-ed指针.未定义的行为?

在对等代码审查会话期间,我看到了如下代码:

char *s = new char[3];
*s++ = 'a';
*s++ = 'b';
*s++='\0';
delete []s; // this may or may not crash on some or any day !!
Run Code Online (Sandbox Code Playgroud)

首先,我知道在标准C++中,指向一个过去的数组大小是可以的,但访问它会导致未定义的行为.所以我相信最后一行*s++='\0'很好.但是,如果我没记错的话,C++标准规定delete应该提供new返回的相同指针.

我相信这意味着返回的指针不得被篡改.我想这是因为new可能会在返回的地址之前保留一些内务信息delete.移动new'd指针可能会使其无法访问.

是未定义的行为还是实现定义或未指定?有谁能确认一下吗?最好是指向C++标准中的正确位置.

C++标准草案(Draft_SC22-N-4411.pdf)的免费草案版本的详细内容见5.3.5节.我是从Bjarne的主页上得到的.

c++ memory-management standards-compliance new-operator

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

关于无向图的KSPA建议

有一个KSPA的自定义实现需要重写.当前实现使用修改的Dijkstra算法,其伪代码在下面粗略地解释.它通常被称为KSPA使用边缘删除策略我认为如此.(我是图论的新手).

Step:-1.  Calculate the shortest path between any given pair of nodes using the Dijkstra algorithm. k = 0 here.
Step:-2.   Set k = 1
Step:-3.   Extract all the edges from all the ‘k-1’ shortest path trees. Add the same to a linked list Edge_List.
Step:-4.  Create a combination of ‘k’ edges from Edge_List to be deleted at once such that each edge belongs to a different SPT (Shortest Path Tree). This can be done by inspecting the ‘k’ value …
Run Code Online (Sandbox Code Playgroud)

algorithm graph-theory shortest-path

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

虚拟呼叫使用纯虚拟成员的地址.这合法吗?

我读回来(可能是在clc ++.moderated),虚拟函数调用可以被模板化.我尝试了以下几行.

#include <iostream>

template<class T, class FUN> 
void callVirtual(T& t, FUN f){ 
   (*t.*f)(); 
} 


struct Base{ 
   virtual ~Base(){} 
   virtual void sayHi()=0; 
}; 


struct Derived : public Base{ 
   void sayHi(){ 
      std::cout << "Hi!" << std::endl; 
   } 
}; 


void Test(){ 
   Base* ptr = new Derived; 
   callVirtual(ptr,&Base::sayHi); 
} 

int main()
{
   Test();
   return 0;
}

Output:
Hi!
Run Code Online (Sandbox Code Playgroud)

虽然在编译时给定纯虚基本成员方法的地址,但是在运行时调用正确的方法的模板化方法.在标准C++中获取纯虚拟成员的地址是否合法?

提前致谢

编辑1:我删除了问题的第二部分'它是如何工作的?'.看起来这是引起注意的东西.

编辑2:我搜索了clc ++.版主并发现了这个链接(http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/5ddde8cf1ae59a0d).似乎是因为标准不限制它,所以它是有效的.

编辑3:在阅读了codeproject文章后(感谢ovanes),我认为编译器会做一些魔术.由于虚函数是通过vtable(特定于编译器)实现的,因此获取虚函数的地址总是会给出vtable中的偏移量.根据所使用的'this'指针,调用相应的函数(其地址位于偏移量).我不知道如何证明这一点,因为标准没有说明任何事情!

c++ inheritance templates

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

专有名单?

我正在尝试从文本blob中过滤名称.目前我只是生成一个单词列表并手动过滤它但我已经有大约8k字了,所以我正在寻找更好的方法.我可以抓住一本字典并过滤掉它们,但这样可以剔除像史密斯和悬崖这样的名字.

我需要的是以下任何一种:

  • 常用名称列表(我需要> 5k最常见的名称)
  • 一个也恰好是单词的名单

我想他们之间,我可以组合黑名单/白名单来获得我需要的东西.

text filtering classification corpus

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

在Python中生成置换词列表的子集

我有一个单词列表,我需要生成所有这些可能的排列,但需要注意一点.

我目前使用以下代码:

from itertools import permutations

wordlist = ["word1", "word2", "word3"]

for perm in permutations(wordlist):
    print "".join(perm)
Run Code Online (Sandbox Code Playgroud)

它给出了输出:

word1word2word3
word1word3word2
...
word3word2word1
Run Code Online (Sandbox Code Playgroud)

但是我还需要它来打印这些单词的子集,例如:

word1    
word1word2
word2word1
...
Run Code Online (Sandbox Code Playgroud)

但我对如何做到这一点没有丝毫想法.我该从哪里开始?我该怎么读?

python permutation subset python-itertools

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