小编dav*_*dag的帖子

如何使用boost正态分布类?

我正在尝试使用boost :: normal_distribution来生成具有均值0和sigma 1的正态分布.

以下代码不起作用,因为某些值超过或超过-1和1(并且不应该).有人能指出我做错了什么吗?

#include <boost/random.hpp>
#include <boost/random/normal_distribution.hpp>

int main()
{
  boost::mt19937 rng; // I don't seed it on purpouse (it's not relevant)

  boost::normal_distribution<> nd(0.0, 1.0);

  boost::variate_generator<boost::mt19937&, 
                           boost::normal_distribution<> > var_nor(rng, nd);

  int i = 0; for (; i < 10; ++i)
  {
    double d = var_nor();
    std::cout << d << std::endl;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的机器上的结果是:

0.213436
-0.49558
1.57538
-1.0592
1.83927
1.88577
0.604675
-0.365983
-0.578264
-0.634376
Run Code Online (Sandbox Code Playgroud)

如您所见,所有值都不在-1和1之间.

谢谢大家!

编辑:当你有最后期限并且在做练习之前避免研究理论时会发生这种情况.

c++ statistics boost normal-distribution

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

如何使用UnitTest ++从测试中访问私有类字段?

在使用UnitTest ++对单元测试进行编码时,我正面临着麻烦.我想知道如何以干净的方式(或者任何方式......)访问私有成员类字段

到目前为止,我有一个解决方案,使用派生自被测试类的类夹具访问受保护的成员.以下代码显示了这个想法:

struct MyFixture : ClassUnderTest { };

TEST_FIXTURE(MyFixture, OneTest)
{
    do_something();
    CHECK(protected_field == true);
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,我认为这不是很干净,因为在某些配置中可能会出现与继承有关的问题,无论如何,只有受保护的成员才能被访问和测试.

我试图将测试类声明为朋友,但由于这些是由UnitTest ++以某种特殊方式创建的,我还没有设法做到这一点.

有没有人知道如何让测试类成为被测试类的朋友?

是否有另一种方式以更容易或不同的方式解决这个问题?

谢谢大家.

c++ unit-testing unittest++

13
推荐指数
2
解决办法
4366
查看次数

Microsoft ACE OLEDB提供程序抛出无法找到可安装的ISAM异常

我正在尝试使用64位进程读取Excel电子表格.因此,我使用64位版本的Micorosft Access数据库引擎2010.

以下代码

var cs = @"Provider=Microsoft.ACE.OLEDB.12.0;"
         + @"Data Source=C:\test.xls;"
         + @"Extended Properties=""Excel 14.0;""");

con = new OleDbConnection(cs);
con.Open();
Run Code Online (Sandbox Code Playgroud)

抛出异常:

找不到可安装的ISAM

使用谷歌我发现了很多关于这个例外的问题.但他们提到JET并且似乎不适用于我的问题.

有什么建议?

oledb excel ms-jet-ace

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

我是否需要在多线程环境中保护对STL容器的读访问权限?

我有一个std :: list <>容器和这些线程:

  • 一个写作者线程无限地添加元素.

  • 一个读取器/写入器线程,可在可用时读取和删除元素.

  • 几个读取器线程访问容器的SIZE(通过使用size()方法)

有一个普通的互斥锁可以保护前两个线程对列表的访问.我的问题是,尺寸读取器线程是否也需要获取此互斥锁?我应该使用读/写互斥?

我在使用Visual C++ 6的Windows环境中.

更新:看起来答案尚不清楚.总结主要疑点:我是否仍然需要保护SIZE读取器线程,即使它们只调用size()(返回一个简单的变量),考虑到我不需要确切的值(即我可以假设一个+/- 1变化)?竞争条件如何使我的size()调用返回一个无效值(即一个完全无关的值)?

:通常,必须保护读卡器线程以避免竞争条件.不过,在我看来,上述更新中提出的一些问题尚未得到解答.

提前致谢!

谢谢大家的答案!

c++ concurrency multithreading stl visual-c++

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

如何处理MFC应用程序中动态创建的控件的消息?

想象一下,我有一个CDialog,可以在用户单击按钮时动态创建控件.它可能是这样的:

// We don't know which is the first id for the new buttons until runtime (!)
MyDialog::MyDialog(/*whatever parameters needed*/, first_id)
  : next_id_(first_id) 
{ /*...*/ }

BOOL MyDialog::OnSomeButtonClicked()
{
  CButton* new_button = new CButton;
  new_button->Create("Caption", WS_CHILD | WS_VISIBLE, this->new_button_rect_, 
                     this, this->next_id_++);
}
Run Code Online (Sandbox Code Playgroud)

然后我的问题是:我怎么能处理来自这个按钮的消息?是否可以使用MFC消息映射工具?

该解决方案应该在vs6和vs2005中都有效.

谢谢!

c++ mfc event-handling visual-c++

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

Feedparser.parse()'SSL:CERTIFICATE_VERIFY_FAILED'

我在解析HTTPS rss feed的feedparser中遇到了这个SSL问题,我真的不知道该怎么办,因为在feedparser上找不到关于这个错误的任何文档

>>> import feedparser
>>> feed = feedparser.parse(rss)
>>> feed
{'feed': {}, 'bozo': 1, 'bozo_exception': URLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),), 'entries': []}
>>> feed["items"]
[]
>>> 
Run Code Online (Sandbox Code Playgroud)

python rss ssl feedparser python-2.7

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

由于堆损坏,任何提示,C++/msvc6应用程序崩溃?

关于申请

  • 它在Windows XP Professional SP2上运行.
  • 它是使用带有Service Pack 6的Microsoft Visual C++ 6.0构建的.
  • 它是基于MFC的.
  • 它使用几个外部dll(例如Xerces,ZLib或ACE).
  • 它具有很高的性能要求.
  • 它做了很多网络和硬盘I/O,但它也是CPU密集型的.
  • 它有一个异常处理机制,在发生未处理的异常时生成一个小型转储.
  • 更新:它是一个高度多线程的应用程序,我们使用互斥锁来保护并发访问(当然,我们可能在某些地方失败了......)

关于崩溃的事实

  • 它只发生在多处理器/多核机器上以及繁重的工作中.
  • 它经过几个小时的运行后随机发生(我们和我们的客户都没有找到模式).
  • 我们无法在我们的测试实验室重现崩溃.它只发生在一些生产系统上(但总是在多核机器上)
  • 虽然完整的堆栈并不总是相同的,但它总是在同一点崩溃.让我添加崩溃线程的堆栈(使用WinDbg获取,抱歉我们没有符号)
Exception code: c0000005 ACCESS_VIOLATION
Address        : 006a85b9
Access Type    : write
Access Address : 2e020fff
Fault address:  006a85b9 01:002a75b9 C:\MyDir\MyApplication.exe

ChildEBP RetAddr  Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
030af6c8 7c9206eb 77bfc3c9 01a80000 00224bc3 MyApplication+0x2a85b9
030af960 7c91e9c0 7c92901b 00000ab4 00000000 ntdll!RtlAllocateHeap+0xeac (FPO: [Non-Fpo])
030af98c 7c9205c8 00000001 00000000 …

windows crash windbg visual-c++ heap-corruption

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

你如何使用 vim 用西班牙语键盘编程?

我正在开始学习和有效使用带有西班牙语键盘的vim 的旅程。

我遇到了第一个重要的问题:

如果你习惯了非美式键盘映射,那么每次编程时重新映射vim移动键或切换布局,哪个更好?

到目前为止,我认为重新映射 vim 移动键以适应我通常的手指位置是要走的路。我想知道其他西班牙人在做什么。

一般来说,了解是否还有其他对西班牙 vim 用户很重要的警告或技巧会很有用。

keyboard vim

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