|
|
1
8
您可以在一个调用中同时获取两个值(如果它们存在),使用equal_range()。它返回一对std::迭代器,第一个是第一个位置,第二个是最后一个位置,您可以在其中插入传递的值,而不会违反顺序。为了严格满足您的条件,在验证迭代器不等于vector的begin()之后,您必须首先递减迭代器。 |
|
|
2
8
你可以用STL的下界在几行代码中得到你想要的。下限使用引擎盖下的二进制搜索,因此运行时是O(log n)。
|
|
|
3
6
您可以简单地使用 binary search ,将在o(log(n))中运行。 这里有一个LUA代码段(我没有时间在C++中做它,抱歉)它做你想要的,除了限制条件(无论如何你没有定义):
它从命令行中获取要搜索的值:
|
|
|
4
4
我将发表我自己的答案,投票给任何帮助我达成这个结论的人,因为这是我最终要用的,你们都帮助我得出这个结论。欢迎评论。
|
|
|
5
1
如果(在您的情况下)d小于第一个元素或大于最后一个元素呢?如何处理负值?顺便说一下:保证你的“d”在向量的第一个值和最后一个值之间,你可以这样做:
剩下的是:
足够优雅?: |
|
|
6
0
你可以在向量中搜索你的值(如果它在向量中的话,它会告诉你值在哪里),然后返回该位置之前和之后的值。因此,搜索45将告诉您它应该在index=1,然后返回0和1(根据搜索的实现,您将得到较小值的索引或较大值的索引,但这很容易用几个边界条件检查)。这应该能够在o(log n)中运行,其中n是向量中的元素数。 |
|
|
7
0
我会写一些这样的东西,没有测试它是否编译,但是你会得到这样的想法:
|
|
|
8
0
我写下了这个小函数,它似乎更适合您想要的一般情况。我还没有完全测试过它,但是我写了一些测试代码(包括)。
|
|
|
9
0
根据tunnuz发布的代码,在绑定检查方面有一些改进:
使用示例:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |