小编Ben*_*y K的帖子

C / C ++中的const数组和静态const数组有什么区别

在Visual Studio 2015中编译以下代码(Win7,x64,调试配置)花费了非常非常长的时间(即超过10分钟)

double tfuuuuuuu(int Ind)
{
  const double Arr[600 * 258] = {3.5453, 45.234234234, 234234.234,// extends to 258 values for each line
                                // 599 lines here.....
                                };                     
  return Arr[Ind];
}
Run Code Online (Sandbox Code Playgroud)

但是当我添加static关键字时,编译花了半秒钟

double tfuuuuuuu(int Ind)
{
  static const double Arr[600 * 258] = {3.5453, 45.234234234, 234234.234,// extends to 258 values for each line
                                // 599 lines here.....
                                };                     
  return Arr[Ind];
}
Run Code Online (Sandbox Code Playgroud)

我知道这static意味着变量将在两次调用之间保持其值,但是如果数组const仍然存在,那么如果我添加它会产生什么区别static呢?为什么编译时间会发生如此大的变化?

编辑

实际代码可以在此处找到(编译是在Debug模式下进行的)

c c++ arrays static const

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

PyCharm 的两个实例

在 Windows 下工作时,我可以打开任意数量的 MATLAB 实例(以及其他 Windows 应用程序的实例)。

用PyCharm可以完成吗
我暂时无法打开多个。

python windows pycharm

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

动态链接-Linux与。视窗

在Windows下,当我在MSVC的DLL项目中编译C / C ++代码时,我得到2个文件:

  1. MyDll.dll
  2. MyDll.lib

据我了解,MyDll.lib其中包含某种指示符表,用于指示dll中的函数位置。使用此dll时(例如在exe文件中),MyDll.lib在链接期间会嵌入到exe文件中,因此在运行时它“知道”函数的位置MyDll.dll并可以使用它们。

但是,如果我在Linux下编译相同的代码,我只会得到一个MySo.so不带 文件的文件MySo.a(相当于libLinux中的文件),那么MySo.so如果在链接过程中未嵌入任何内容,Linux下的可执行文件如何知道函数的位置?

c c++ linux windows shared-libraries

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

在tensorflow 2.0中添加无维度

我有一个xx形状为的张量:

>>> xx.shape
TensorShape([32, 32, 256])
Run Code Online (Sandbox Code Playgroud)

如何添加前导None尺寸以获得:

>>> xx.shape
TensorShape([None, 32, 32, 256])
Run Code Online (Sandbox Code Playgroud)

我在这里看到了很多答案,但都与 TF 1.x 有关

TF 2.0 的直接方式是什么?

tensorflow tensorflow2.0

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

在valarray上,STL算法"count"的返回类型是什么

我使用的是Visual Studio 2010 Pro一个上Windows 7 64bit机,我想使用count(从<algorithm>上头)valarray:

int main()
{

  valarray<bool> v(false,10);
  for (int i(0);i<10;i+=3)
         v[i]=true;

  cout << count(&v[0],&v[10],true) << endl;

  // how to define the return type of count properly?
  // some_type Num=count(&v[0],&v[10],true); 
}
Run Code Online (Sandbox Code Playgroud)

上面程序的输出是正确的:

4
Run Code Online (Sandbox Code Playgroud)

但是,我想将值赋给变量,并int在编译器警告中使用有关精度损失的结果.由于valarray没有迭代器,我无法弄清楚如何使用iterartor::difference_type.

这有点可能吗?

c++ iterator valarray

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

Tensorflow 2.0 中的二阶导数

f(x) = (x,x^2,x^3)我正在尝试使用 TF 2.3 和 来计算标量变量的简单向量函数的二阶导数tf.GradientTape

def f_ab(x):
    return x, x** 2, x** 3

import tensorflow as tf
in1 = tf.cast(tf.convert_to_tensor(tf.Variable([-1,3,0,6]))[:,None],tf.float64)
with tf.GradientTape(persistent=True) as tape2:
    tape2.watch(in1)
    with tf.GradientTape(persistent=True) as tape:
        tape.watch(in1)
        f1,f2,f3 = f_ab(in1)
    df1 = tape.gradient(f1, in1)
    df2 = tape.gradient(f2, in1)
    df3 = tape.gradient(f3, in1)

d2f1_dx2 = tape2.gradient(df1, in1)
d2f2_dx2 = tape2.gradient(df2, in1)
d2f3_dx2 = tape2.gradient(df3, in1)
Run Code Online (Sandbox Code Playgroud)

由于某种原因,只有最后两个导数是正确的,而第一个导数d2f1_dx2,结果是None

当我更改f_ab

def f_ab(x):
    return x** 1, x** 2, x**3   
Run Code Online (Sandbox Code Playgroud)

我得到了d2f1_dx2 …

machine-learning derivative deep-learning tensorflow tensorflow2.0

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

C / C ++中的显式转换

在阅读了关于该主题的几篇SO帖子之后,我仍然感到困惑,主要是关于整数和布尔变量/表达式。

A.整数表达式

假设我想在浮点计算中使用模表达式,以下哪项最正确?C和C ++有什么区别?还是我应该只相信编译器进行正确的转换?

double sign;
int num = rand() % 100;
//want to map odd num to -1.0 and even num to 1.0
//A
sign = -2 * (num % 2) + 1;
//B
sign = -2.0 * (num % 2) + 1;
//C
sign = -2.0 * (num % 2) + 1.0;
//D
sign = -2 * (num % 2) + 1.0;
//E
sign = -2 * (double)(num % 2) + 1;
//F
sign = -2.0 * (double)(num …
Run Code Online (Sandbox Code Playgroud)

c c++ casting

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

比较Python中的两个字符

比较strPython(3.x,如果重要的话)中的两个字符(即一个字符)是否定义良好?还是我必须进行显式转换?

换句话说,就是:

'a' > 'b'

等同于:

ord('a') > ord('b')

python python-3.x

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

由于错误的指针算法,memcpy 中的代码崩溃

出于某种原因,我无法理解以下代码memcpy在循环中的第二个崩溃(没有任何错误消息;gcc 7.4.0 Ubuntu 16.04,QT5)所以我猜我的指针算法是错误的,但我不明白为什么:

#include <stdio.h>
#include <string.h>

#define ROWS 48
#define COLS 48
#define CHANNELS 3
#define NUM_PIX ((ROWS) * (COLS) * (CHANNELS))
struct MyImage
{
  int width;
  int height;
  int channels;
  unsigned char rawData[NUM_PIX];
};

int main()
{
  const int numIm = 16;
  MyImage theClsImArr[numIm];
  unsigned char ImArr[numIm][ROWS][COLS][CHANNELS];
  int Bytes2Copy = NUM_PIX * sizeof(unsigned char);
  for (int i = 0; i < numIm; i++ )
     memcpy(theClsImArr[i].rawData,ImArr + i * NUM_PIX ,Bytes2Copy ); // works when i …
Run Code Online (Sandbox Code Playgroud)

c++ pointers memcpy

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