|
|
1
7
如果您要查找的值与运算符可比<(如int、float和std::string),那么使用std::set将值放在那里,然后检查set.find(value)==set.end()会更快。这是因为该集合将以一定的顺序存储值,从而允许更快的查找。使用哈希表会更快。然而,对于少于50个左右的值,你可能不会注意到任何差异:)所以我的经验法则是:
|
|
|
2
3
请注意,您可以通过创建具有不同数量参数的多个模板,使InSet像使用可变数量的参数一样工作。 然后:
等等 |
|
|
3
1
根据您的要求
不过,这种语法可能更清楚:
如果这些值真的是树或链表的一部分,那么你已经有了你的集合/容器,最好的办法就是使用一些递归:
您只需将此添加到父级和子级所属的任何类中:
|
|
|
4
1
std::set 或a std::矢量 std::set_intersection()
或者,考虑到你的1-N查找问题:
|
|
|
5
1
|
|
|
6
0
当然,如果你只关心找到一个值,你可以创建自己的包装器
|
|
|
7
0
|
|
|
8
0
我喜欢集合方法,也许使用hash_set而不是vector。将值存储在属性文件中,并有一个方法从文件中填充hash_set,如果值在hash_set中,则有另一个方法返回布尔值。然后,您可以在主代码中找到一行2行。 |
|
|
9
0
这取决于检索值的来源,如果你从文件或流中读取,那么你会做一些不同的事情,但如果你的来源是一系列函数,那么以下是一种不同的方法,虽然不完美,但可能适合你的需求:
如果你知道哪些函数是源(以及对象的数量),我希望你可以使用预处理器组装函数指针数组。 |
|
|
10
0
使用boost::array(或std::tr1::array)并创建这样一个简单的函数怎么样:
然后,您可以很容易地重用它:
编辑: 因此,提振已经结束。将其调整为常规数组非常容易:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |