小编Rik*_*der的帖子

在C++中合并范围

我有一个随机排序的唯一闭端范围列表R 0 ... R n-1其中

R i = [r1 i,r2 i ](r1 i <= r2 i)

随后,一些范围重叠(部分或完全),因此需要合并.

我的问题是,用于合并这些范围的最佳算法或技术是什么.这种算法的示例或到执行这种合并操作的库的链接将是很好的.

c++ algorithm merge range

30
推荐指数
2
解决办法
7458
查看次数

GCC和MSVC之间的数字10的差异

我有以下代码:

#include <iostream>
#include <limits>

int main()
{
   std::cout << std::numeric_limits<unsigned long long>::digits10 << std::endl;
   return 0;
}
Run Code Online (Sandbox Code Playgroud)
  • GCC 4.4返回19
  • MS VS 9.0返回18

有人可以解释为什么两者之间有区别?无论编译器如何,我都希望这样的常量是相同的.

c++ gcc digits visual-c++ numeric-limits

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

使用std :: shared_ptr对象实例创建boost :: thread

我有以下两个代码段.第一个块编译并按预期工作.但是第二个块不能编译.

我的问题是,根据下面的代码,尝试基于被shared_ptr代理的对象的实例创建线程时,正确的语法是什么?

#include <iostream>
#include <new> 
#include <memory>

#include <boost/thread.hpp>

struct foo
{
   void boo() {}
};

int main()
{
   //This works
   {
      foo* fptr = new foo;
      boost::thread t(&foo::boo,fptr);
      t.join();
      delete fptr;
   }

   //This doesn't work
   {
      std::shared_ptr<foo> fptr(new foo);
      boost::thread t(&foo::boo,fptr);
      t.join();
   }

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

Error   5   error C2784: 'T *boost::get_pointer(T *)' : could not deduce template argument for 'T *' from 'std::tr1::shared_ptr<_Ty>'   c:\program files (x86)\boost\boost_1_47\boost\bind\mem_fn_template.hpp  40  1   htest
Error   3   error C2784: 'T *boost::get_pointer(const std::auto_ptr<_Ty> …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-thread shared-ptr c++11

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

哪里恒5来自于中位数的中位数算法?

我一直在试图了解其中"5"来自于中位数算法的中位数,但似乎无法找到它是如何得出的简单描述,以及为什么它是最佳的.

例如,为什么不说7是一个可行的选择?

我可以看到5的唯一优势是它在中间的每一侧有2个项目,对5个项目进行排序,这是一个不超过3个交换的简单情况.

algorithm computation-theory median-of-medians

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

类本地作为C++ 11之前的谓词

使用GCC和Clang在使用C++ 11模式构建时,以下代码编译时没有错误/警告.但是,如果我尝试在没有C++ 11模式的情况下编译,并且在第二个范围内发生错误.

#include <algorithm>
#include <vector>

struct astruct
{
   int v;
};

struct astruct_cmp0
{
   bool operator()(const astruct& a0, const astruct& a1) {
     return a0.v < a1.v;
   }
};

int main()
{
   std::vector<astruct> alist;
   {
      // Works - no errors
      std::stable_sort(alist.begin(),alist.end(),astruct_cmp0());
   }

   {
      struct astruct_cmp1
      {
         bool operator()(const astruct& a0, const astruct& a1) {
           return a0.v < a1.v;
         }
      };

      // error: template argument uses local type 'astruct_cmp1'
      std::stable_sort(alist.begin(),alist.end(),astruct_cmp1());
   }

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:允许本地结构定义的C++ 11更改是什么?有人可以请我指出标准中的具体部分(也许是第9.8节)

c++ compiler-errors predicate language-lawyer c++11

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

使用文件I/O正确创建和运行win32服务

我已经基于这个代码示例编写了一个非常简单的服务应用程序.

作为正常运行的一部分,应用程序假定在找到的目录中或在其执行路径中存在文件.

当我'安装'服务然后从控制面板中的服务管理器"启动"服务时.应用程序失败,因为它找不到要打开和读取的文件(即使该文件与安装的可执行文件位于同一目录中).

我的问题是什么时候运行Windows服务,这应该是预期的运行路径?

当调用'CreateService'时,似乎只有二进制的路径参数,而不是执行.有没有办法指出应该从哪里执行二进制文件?

我在Windows Vista和Windows 7上试过这个.得到同样的问题.

c c++ service winapi

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

在C++中设置正在运行的应用程序的当前目录

下面的回答给出了一个使用C#的解决方案,我想知道如果只使用c ++(而不是c ++\cli)会有什么等价物

System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
Run Code Online (Sandbox Code Playgroud)

有没有什么可以提升的伎俩?

基于这个问题我一直在:正确创建和运行带文件I/O的win32服务

c c++ winapi native

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