avatar
w*g
2
我需要产生一系列同分布的哈希函数,想存在一个数组里。哈希函数的构造函数接受一
机函数生成器的引用用于产生随机数。这样顺序产生的哈希函数可以各不相同但属
于同

问题是new只能调用无参构造函数; vector允许调用无参或拷贝构造函数。拷贝构造函
数不
行因为产生的对象是完全一样的,而不是独立同分布的。
我目前的做法是定义一个无参构造函数,不干任何事情,再定义一个init方法做真正的
化。vector分配后用一个循环初始化每个元素。但我觉得这种做法不好,因为一开
始生
对象其实并没有真正初始化,如果忘了调用init就会出错。另外同时存在构造
函数和ini
非常混乱。
另一种方法是分配一个指针数组,然后挨个new。用完了挨个delete。感觉比较原始,
得判
断0指针什么的,也很不爽。
重载拷贝构造函数最简单,但是这样就没法保持“拷贝”的语义,也会引起混乱。
不知道有没有什么好的idiom或者现成的library可以用。
avatar
P*e
3
看你最后想要什么,hash pnter还是hash object,我比较倾向第二种
区别就是:
vector vh;
vh.push_back(new hash(random));
hash* h1 = new hash[10];
hash** h2 = new hash*[10];

但属

【在 w***g 的大作中提到】
: 我需要产生一系列同分布的哈希函数,想存在一个数组里。哈希函数的构造函数接受一
: 机函数生成器的引用用于产生随机数。这样顺序产生的哈希函数可以各不相同但属
: 于同
: 。
: 问题是new只能调用无参构造函数; vector允许调用无参或拷贝构造函数。拷贝构造函
: 数不
: 行因为产生的对象是完全一样的,而不是独立同分布的。
: 我目前的做法是定义一个无参构造函数,不干任何事情,再定义一个init方法做真正的
: 化。vector分配后用一个循环初始化每个元素。但我觉得这种做法不好,因为一开
: 始生

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。