小编jte*_*erm的帖子

<algorithm>函数用于查找小于或等于的最后一项,如lower_bound

有没有在使用二进制搜索,像函数lower_bound,但返回的最后一个项目低于或相等,以根据给定的断言?

lower_bound 定义为:

查找具有大于或等于指定值的有序范围中的第一个元素的位置,其中排序标准可以由二元谓词指定.

并且upper_bound:

查找具有大于指定值的有序范围中第一个元素的位置,其中排序条件可以由二元谓词指定.

具体来说,我有一个时间排序事件的容器,在给定的时间内,我想找到之前或之前的最后一个项目.我可以通过上/下限,反向迭代器和使用std::greaterstd::greater_equal?的某种组合来实现这一点.

编辑:如果你在数组开始之前要求一个点,则需要对user763305的建议进行调整:

iterator it=upper_bound(begin(), end(), val, LessThanFunction());
if (it!=begin()) {
  it--; // not at end of array so rewind to previous item
} else {
  it=end(); // no items before this point, so return end()
}
return it;
Run Code Online (Sandbox Code Playgroud)

c++ binary-search lower-bound

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

FIX协议的OrdID,ClOrdID,OrigClOrdID之间有什么关系?

我是FIX协议的新手,希望有人可以帮助澄清一些条款.

特别是可能有人解释(也许用一个例子)的流动NewOrderSingle,ExecutionReport,CancelReplaceRequest以及如何领域ClOrdID,OrdID,OrigClOrdID在这些消息中使用?

quickfix fix-protocol

10
推荐指数
1
解决办法
3009
查看次数

这段代码在做什么?(为size_t)-1-

有人可以解释当size_t或任何其他类型标识符包含在括号中时会发生什么.我知道这是旧的类型转换语法,但在这种情况下,我不会关注正在发生的事情.

我已经看到它将类型的最大大小定义为:

size_t max_size = (size_t)-1
Run Code Online (Sandbox Code Playgroud)

c++

7
推荐指数
1
解决办法
3963
查看次数

如何检查CMake构建目录构建类型是Debug还是Release?

我知道构建类型可以使用-DCMAKE_BUILD_TYPE=Release或者设置,-DCMAKE_BUILD_TYPE=Debug但有没有命令行方式来检查/确认CMake正在使用哪种构建类型?

cmake

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

WinMerge - 有没有办法排列移动/移动的代码块?

使用 WinMerge 时,我正在查看一个文件,该文件已将一段代码插入到一个函数中,该函数导致文件的其余部分在比较中不同步。我的要复杂得多,但与下面的简单示例基本相同:

  FILE 1                   FILE 2
1 int main() {             int main() {
2
3   int a = 3;               int a = 3;
4   a += 5;                  for(int i = 0; i < a; ++a)
5 }                             a += i;
6                           
7                            a += 5;
8                         }
Run Code Online (Sandbox Code Playgroud)

WinMerge 不是将 for 循环识别为插入的块并显示文件的其余部分,而是在第 4、5、6、7、8 行显示差异。我希望它将文件 1 的第 4 行同步到文件 2 的第 7 行,并使其变得更清晰。有这个设置吗?我已经使用了“移动代码块”设置,但它只是在文件中稍后突出显示匹配的代码块,而不是将它们排列起来。

有什么建议?

winmerge

5
推荐指数
2
解决办法
3228
查看次数

您应该将项目迁移到 C++11 吗?

我一直在尝试让我们的团队将一个大型C++项目从VS2008迁移到VS2012。我想这样做主要是因为我想开始使用 C++11 并且 IDE 更好。所以我的理由有些自私。

我的团队领导对此表示反对,因为他没有看到迁移的业务案例,并指出我们将通过 C++11 获得的大多数性能改进功能已经通过 BOOST 和其他库实现。他还表示,这将需要更改我们所有平台上的运行时,这可能会改变某些行为。这意味着我们需要在我们部署到的所有服务器上重新测试。

我对第一个论点有些理解,尽管我相信 C++11 代码会比使用 BOOST 干净得多(同样不是一个很好的商业案例)。

关于使用不同运行时的争论我不明白。本机 C++ 应用程序使用哪些运行时?这不是VC++。他担心的只是 STL 的实现不完全相同吗?

我不明白会有什么问题。我有什么遗漏的吗?我还应该引用其他关于迁移的良好论据来帮助我的案例吗?

c++ boost c++11 visual-studio-2012

3
推荐指数
1
解决办法
1476
查看次数

在VS2013中使用VS2008(v90)C++工具集?

MS文档说明了如何在VS2013中使用2010或2012工具集.

有谁知道是否还有对2008工具集的支持?我正在升级从2008年到2013年的几个项目,但我的团队负责人希望我们最初升级项目文件,但仍然针对与2008年相同的编译器/运行时.

这可能吗?

c++ visual-studio-2008 visual-studio-2013

3
推荐指数
1
解决办法
4880
查看次数

对 std::cin &gt;&gt; 的调用不会阻塞

我有一个 C++ 控制台应用程序,它通过显示菜单然后对其进行操作来获取用户的输入。当用户输入整数值时一切正常,但当用户输入 ' ? '(我想将其作为“显示帮助”选项处理)代码开始无限循环并且不会阻塞调用std::cin>>。这是预期的吗?我在这里缺少什么?

int queryAction()
{
  while(1) {
    char selection;
    std::cout << "Action: ";
    std::cin >> selection;

    switch(selection)
    {
      //Some code that acts on the selection
      ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

跟进: 如果我std::cin.clear()在调用之前添加cin>>所有内容都很好。我想我的后续问题是为什么输入上设置的错误状态应该是有效的 ascii 字符?

c++

2
推荐指数
1
解决办法
5151
查看次数

有人可以解释ref()vs&c ++ 11以及何时使用每个?

我阅读了有关它的文档,但如果有人能用更简单的英语解释它,我会很感激.

c++ reference std c++11

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

如何访问struct/class范围内声明的别名?

使用以下代码

Header.h

namespace some_name {
    struct foo {
        // using alias
        using MyMap = std::map<double, some_class* const>;
        MyMap* GetMap();
        MyMap* map_;
    }
}
Run Code Online (Sandbox Code Playgroud)

Source.cpp

#include "Header.h"

// using declaration
using some_name::foo;

MyMap* foo::GetMap(){
    ...
    return map_;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到一个编译器错误,指出:

错误:'MyMap'没有命名类型

MyMap*foo :: GetMap(){

^

但是,如果我GetMap()在头文件中定义一切正常,但如果我将它移动到源文件,我会得到该错误.我在这里错过了什么?

c++ c++11

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