小编Fan*_*c23的帖子

17
推荐指数
2
解决办法
4838
查看次数

有关boost :: swap的问题

几个问题boost::swap.请参考下面的代码,它基本上是一个剪切粘贴boost/swap.hpp.我指的是库版本1.43.0.

namespace boost_swap_impl
    {
      template<class T>
      void swap_impl(T& left, T& right)
      {
        using namespace std;//use std::swap if argument dependent lookup fails
        swap(left,right);
      }

  template<class T, std::size_t N>
  void swap_impl(T (& left)[N], T (& right)[N])
  {
    for (std::size_t i = 0; i < N; ++i)
    {
      ::boost_swap_impl::swap_impl(left[i], right[i]);
    }
  }
}

namespace boost
{
  template<class T1, class T2>
  void swap(T1& left, T2& right)
  {
    ::boost_swap_impl::swap_impl(left, right);
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 为什么boost::swap声明为template <typename T1, typename T2>在其余代码中它处理相同类型的时间? …

c++ boost

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

用于测试分布式系统的集成测试框架?

我有一个分布式系统,其组件分布在多个盒子中.他们使用tcp或多播互相交谈.每个组件互相交换消息 - 这些基本上是被序列化的数据结构.

我们有哪些集成测试框架来测试这些系统?我熟悉ruby所以基于ruby的东西肯定会有所帮助.

ruby java tdd integration-testing

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

并发链表

我试图在c ++中设计一个允许并发访问的链表.显然,对于该列表使用单个锁是非常低效的,因为可以并行更新不相交的区域.现在除了每个节点存储一个锁之外,还有什么选择?

另外,在这种情况下,非阻塞版本会更好吗?任何相关链接,任何人?

编辑:感谢您的回复.我想补充一些事情:

  1. 如何为每个M节点存储N个锁而不是1:1锁:节点比?有些线程会等待,但这是一种权衡.你怎么看?
  2. 如果我打算在这个链表中找到一些节点,看起来需要锁定所有互斥锁.这是一个问题,因为锁定和解锁所有互斥锁都很耗时.有没有人有更好的选择?
  3. 我对非阻塞算法持开放态度.但是如何在不使用汇编的情况下在旧的C++中使用CAS?我听说gcc有一些__sync属性做类似的工作,但不确定.
  4. 使用非阻塞方法,如何在链表上进行查找?

c++ multithreading pthreads

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

继续使用高级C++的最佳方法是什么?

对于那些可能被称为中级C++程序员的人来说,你有什么建议转向下一级C++编程?

中级程序员:合理地理解ISO C++,能够运气好读取和修改其他代码,很好的数据结构和算法但不是很好

  1. 学习C++ 0x
  2. 了解为不同的构造类型生成哪种汇编代码,可能是x86
  3. 忘记语言的细微差别并从Sipser或Papadimitriou这样的地方获得基础知识 - 自动机理论
  4. 如果你知道OOP或至少认为你这样做,请考虑如何将功能编程技巧与C++结合起来
  5. 在编译器和开源(如LLVM或GNU工具链)上处理某些事情
  6. 整个想法被破坏 - 下一级意味着更复杂的数据结构.因此,如果您了解AVL,请考虑学习左倾红黑树等

现在显然没有人可以在没有优先级的情况下完成此列表中的所有操作,因此我们需要一些关于可能是最佳前进方向的建议.

注意:谢谢大家的非常有帮助的回复.

c++ programming-languages

9
推荐指数
3
解决办法
2901
查看次数

mem_fn和bind的一些实际用途

有人可以推荐tr1的mem_fn和绑定工具的一些很酷的实际用途吗?我不需要深奥的c ++用于库开发.只是一些使用这些的应用程序级编码.

任何帮助将非常感激.

c++ tr1 mem-fun stdbind

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

C,C++中重入代码的推荐实践

在编写可重入代码时,我正在阅读有关推荐实践的重新入门指南.

其他参考资料和资源涵盖了这个主题?

什么类似lint的工具可以用来检查这些问题?

c c++ reentrancy

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

64位环境中引用的大小

在浏览SO上的另一个问题的响应时遇到了这个(References Vs Variable Gets).我的问题是,对于所有64位环境,即使原始版本的尺寸较小,它也能保证对变量的引用为64位吗?在64位环境中的char引用中将是> sizeof(char)?标准中是否有明确规定的部分?

编辑:为了更清晰 - char c1 ='a'; char&c2 = c1; 我的问题是64位机器中的sizeof(c2)> sizeof(c1)?

c++ 64-bit

6
推荐指数
2
解决办法
3359
查看次数

当新功能作为语言核心的一部分进入时,现有的库是否会死亡?

**请人们,这个问题并不是要开始任何火焰战争.**

我试图了解现有的库实现某些功能会发生什么,而现在该语言中以前没有的相同功能作为语言的一部分?例如,C++很快会将std :: thread作为语言标准的一部分,那么POSIX或Boost库会发生什么?

我也很想了解其他编程语言的用户在这方面可能具有的经验.

c++ programming-languages

6
推荐指数
2
解决办法
134
查看次数

这个模板的类型是什么?

std::tr1::_Bind<void (*()(std::tr1::reference_wrapper<int>))(int&)>
Run Code Online (Sandbox Code Playgroud)

我理解std::tr1::reference_wrapper<int>,这整个事情是某种函数指针返回voidint&作为参数.但我似乎无法在开始时遵循*().代码是从一些gdb会话中剪下来的,我经历了一段时间.

另外,tr1 :: function的类型是什么?一些函数返回void并且不参数?

0x00000001000021a1 in std::tr1::function<void ()()>::operator() (this=0x7fff5fbffb98) at functional_iterate.h:865
Run Code Online (Sandbox Code Playgroud)

但接下来是一个错误:

template <typename T>
void f()
{ 
  cout << "general\n";
}

template<>
void f<void ()()> () // this is error
{
  cout << "specific\n";
}
Run Code Online (Sandbox Code Playgroud)

c++ templates

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