小编use*_*288的帖子

一些宏语句可能在C++中有意想不到的结果?

哪个宏语句可能会导致意外结果?

#define YEAR_LENGTH   365
#define MONTH_LENGTH  30
 #define DAYCALC(y, m, d) ((y * YEAR_LENGTH) + (m * MONTH_LENGTH) + d)

 int main()
 {
    int x = 5, y = 4 , z = 1;
    cout << DAYCALC(x *3 , y %3 , z) << endl ;
    cout << DAYCALC(x +12 , y  , 300) << endl ;
    cout << DAYCALC(x , 40 - y , 3+z) << endl ;
    cout << DAYCALC(x  , y  , (z+50)) << endl ;
    cout …
Run Code Online (Sandbox Code Playgroud)

c c++ macros

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

给一个C++类foo,里面有一个synchronized方法.如何保证只有一个线程访问同步方法

给一个C++类foo,里面有一个synchronized方法.我们有两个foo对象,名为f1和f2,如果f1和f2同时运行,我们能保证只有一个线程访问同步方法吗?

我的想法:

使用互斥量,无论谁需要访问该方法,谁获得互斥锁.

这个面试问题似乎并不那么简单.

有解决方案吗

谢谢

c++ java multithreading synchronization class

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

python deepcopy和浅拷贝和传递引用

关于python深度复制和浅拷贝的问题.

帖子在 深拷贝和浅拷贝之间有什么区别?

无法帮助我.

为什么1的总和是6而不是10?

eg1:

kvps = { '1' : 1, '2' : 2 }
theCopy = kvps.copy()  # both point to the same mem location ? 
kvps['1'] = 5
sum = kvps['1'] + theCopy['1']
print sum
Run Code Online (Sandbox Code Playgroud)

输出和是6

eg2:

aList = [1,2]
bList = [3,4]
kvps = { '1' : aList, '2' : bList }

theCopy = kvps.copy()  # both point to the same mem location ? 
kvps['1'][0] = 5
sum = kvps['1'][0] + theCopy['1'][0]

print sum
Run Code Online (Sandbox Code Playgroud)

输出总和是10

eg3: …

python linux reference deep-copy shallow-copy

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

如何控制双精度计算以避免C++ linux x86_64中的舍入错误?

在linux x86_64上的C++代码中,我需要加倍精度计算(+或 - ).

26.100000000000001 - 26 + 0.10000000000000001

我有:

0.20000000000000143

我想得到0.2.

这里,显示格式不是导入的,计算结果将用于一些if-else分支条件.所以,我只希望if-else条件比较十进制数字后面的4位数.

这似乎是一个舍入错误?

如何将计算精度限制在小数点后的4位数?

我不想调用任何函数以避免开销.

由于转换开销,我不想使用stringstream.

有更好的想法吗?

谢谢

c++ algorithm precision double rounding-error

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

Erlang代码反向字符串

这是一个执行字符串反转的Erlang代码.

但是,它不起作用.

 -module(lists1).
 -export([reverse/1]).
  reverse(L) ->
        reverse(L, []).
  reverse([H|T], L) ->
        reverse(T, [H|L]);
  reverse([], L) ->
         L.
Run Code Online (Sandbox Code Playgroud)

lists1:reverse(Bbc).**异常错误:没有匹配lists1的函数子句:reverse(def,[])(lists1.erl,第5行)

为什么?

任何帮助将不胜感激.

谢谢

algorithm erlang

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

如何在Linux上的C++中包含<atomic>?

我试图在我的C++ pthread程序中包含atomic.

#include <atomic>
Run Code Online (Sandbox Code Playgroud)

但是,我得到了错误:

错误:原子:没有这样的文件或目录

我试过了 :

 #include <asm/atomic>
 #include <atomic.h>
 #include <linux/atomic>
 #include <util/atomic>
 #include <stdcatomic>
 #include <catomic>
Run Code Online (Sandbox Code Playgroud)

没有人工作.

我的gcc是gcc版本4.1.2 20080704(Red Hat 4.1.2-52)

帖子:

在ubuntu中#include <cstdatomic>"没有这样的文件"

g ++ 4.4.3中的std :: atomic支持

也不工作.

And #include <thread> also got : No such file or directory
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

谢谢 !

UPDATE,

我正在尝试在Linux上安装GCC 4.7,但在"make check"中,我收到错误,

   autogen -T /remote/mypath/gcc_4_7_2012_5_28/gcc_4_7_new_2012_5_29/trunk/fixincludes/check.tpl , remote/mypath/gcc_4_7_2012_5_28/gcc_4_7_new_2012_5_29/trunk/fixincludes/inclhack.def ,

   make[2]: execvp: autogen: Permission denied, then I tried to install autogen, but 
   got: I need to install guile-devel, then when I installed …
Run Code Online (Sandbox Code Playgroud)

c++ linux gcc pthreads atomic

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

可以在C++中使用缺少的模板参数调用模板函数吗?

这是一个面试问题,已经完成.

哪条线有错误?

  #include<iostream>
  template<class T> void foo(T op1, T op2)
  {
      std::cout << "op1=" << op1 << std::endl;
      std::cout << "op2=" << op2 << std::endl;
  }

  template<class T>
  struct sum
  {
      static void foo(T op1, T op2)
      {
              std::cout << "sum=" << op2 << std::endl ;
      }
  };

  int main()
  {
      foo(1,3);  // line1
      foo(1,3.2);  // line2
      foo<int>(1,3);  // line3
      foo<int>(1, '3') ; // line 4
      sum::foo(1,2) ; // line 5  , 

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

第2行有错误,因为模板参数与定义不匹配.第5行有错误,因为缺少模板参数.

但是,第1行不是错误,我不知道为什么,它是否也错过了模板参数?

谢谢 !

c++ templates class function-templates

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

如何在python中进行浮点计算?

如何在python中进行浮点计算?

  for j in range(10 , 50):      
         print "(10/(j+1)) is %f " % (10/(j+1))
Run Code Online (Sandbox Code Playgroud)

为什么输出都是0?

j必须是整数,但我需要浮动结果.

谢谢

python floating-point

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

在Linux上的valgrind中有内存泄漏的AC程序但是我从malloc()中释放了mem

我正在为一个真正的应用项目做C++程序.

我用valgrind做内存泄漏检查.

我有 :

10个块中的160个字节肯定在丢失记录1中丢失2 == 14312 ==在0x4A0846F:malloc(vg_replace_malloc.c:236)

但是,我已经调用了free()来释放它.

怎么解决?为什么我有内存泄漏?

任何帮助将不胜感激.!

代码如下:

#include <stdio.h>
#include <stdlib.h>
int * GetSomeIDs() ; 
/*-------- GetSomeIDs-----*/

typedef struct {
       char* alias;   /* '\0'-terminated C string */
       int   specific_id;
} aliasID;

int GetNumberOfAliases(void)
{
    return 10;
}

aliasID *GetNextAlias(void)
{
    aliasID *p = (aliasID *) malloc(sizeof(aliasID)) ;
    p->alias = "test alias";
    p->specific_id = rand();
    return p; 
}

int *GetSomeIDs2(aliasID  ***a, int *aIDsize , int *idSize)
{
    int  *ids  = (int *) malloc(sizeof(int) * 8) ; …
Run Code Online (Sandbox Code Playgroud)

c linux memory valgrind memory-leaks

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

boost :: mutex无法避免C++程序中的竞争条件?

我正在Linux上进行多线程C++提升.

即使我尝试使用锁,以下程序仍然具有竞争条件.

结果是8或9或5.它不应该发生.

 #include <iostream>
 #include <boost/bind.hpp>
 #include <boost/threadpool.hpp>
 #include <boost/thread/mutex.hpp>
 #include <boost/thread.hpp>

 boost::mutex myMutex ;
 int g = 0 ;

 void f()
 {

    //myMutex.lock();
    {
            boost::mutex::scoped_lock lock(myMutex);
            ++g;
    }
    //myMutex.unlock();
    return ;
 }
 const int threadnum = 10;
 int main()
 {
    boost::threadpool::fifo_pool tp(threadnum);
    for (int i = 0 ; i < threadnum ; ++i)
            tp.schedule(boost::bind(f));
    std::cout << g << std::endl ;
    return 0 ;
 }
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

谢谢 !

c++ linux multithreading boost mutex

0
推荐指数
2
解决办法
687
查看次数