小编use*_*652的帖子

静态变量动态分配

函数内部的静态变量仅在程序的生命周期内分配一次.

所以,如果我有一个像这样的功能:

void f(int n) {

  static int *a = new int[n];

}
Run Code Online (Sandbox Code Playgroud)

我先打电话

f(1)
Run Code Online (Sandbox Code Playgroud)

然后

f(3)
Run Code Online (Sandbox Code Playgroud)

第二次通话后阵列有多大?

c++ static dynamic

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

指向数组的指针大小

如果我有一个像这样声明的数组:

int a[3][2];
Run Code Online (Sandbox Code Playgroud)

那么为什么:

sizeof(a+0) == 8
Run Code Online (Sandbox Code Playgroud)

然而:

sizeof(a)   == 24
Run Code Online (Sandbox Code Playgroud)

我不明白如何向指针添加0会改变sizeof输出.可能有一些隐式类型转换吗?

c++ pointers

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

数组的地址

如果我有一个像这样声明的数组:

int a[3][2];
Run Code Online (Sandbox Code Playgroud)

存储在地址A.

那么+ 1等于A+2*4,这对我来说很清楚,但为什么&a+1等于A+6*4

c++ arrays pointers

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

如何知道使用哪个malloc?

我理解它的方式,存在许多不同的malloc实现:

  • dlmalloc - 通用分配器
  • ptmalloc2 - glibc
  • jemalloc - FreeBSD和Firefox
  • tcmalloc - 谷歌
  • libumem - Solaris

有没有办法确定我的(linux)系统上实际使用了哪个malloc?

我读到"由于ptmalloc2的线程支持,它成为了linux的默认内存分配器." 我有什么方法可以自己检查一下吗?

我问,因为我似乎没有通过在下面的代码中对malloc循环进行并列化来加快速度:

for (int i = 1; i <= 16; i += 1 ) {
    parallelMalloc(i);
}

 void parallelMalloc(int parallelism, int mallocCnt = 10000000) {

    omp_set_num_threads(parallelism);

    std::vector<char*> ptrStore(mallocCnt);

    boost::posix_time::ptime t1 = boost::posix_time::microsec_clock::local_time();

    #pragma omp parallel for
    for (int i = 0; i < mallocCnt; i++) {
        ptrStore[i] = ((char*)malloc(100 * sizeof(char)));
    }

    boost::posix_time::ptime t2 = boost::posix_time::microsec_clock::local_time();

    #pragma omp parallel for
    for (int …
Run Code Online (Sandbox Code Playgroud)

c++ heap malloc

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

从html触发javascript的正确方法

在调用java脚本的html网站中使用图形组件(更确切地说是twitter.bootstrap图标)的方法是什么?

人们可以制作一个按钮并将图标放在上面,但这看起来不太好恕我直言.或者可以使用href标签,

<a href="#" name="ad_fav" onclick= CALLFUNCTION> <i
                        class="icon"></i></a>
Run Code Online (Sandbox Code Playgroud)

但实现这一目标的最简洁方法是什么?如果图标在点击后可能会发生变化,那也很好.

例如,如何实现stackoverflow中的upvote按钮?

html javascript twitter-bootstrap

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

给定排序的矢量查找从负到正的过渡

鉴于已排序std::vector<int>,我希望使用C++ 11-STD函数来查找元素从负变为正的索引.

我知道我可以使用二进制搜索来实现它,但我感兴趣的是标准库中是否有任何函数,类似于一元find_if,这将有助于此搜索(可能与正确的lambda表达式相关).

c++ search stl stl-algorithm c++11

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

数组:存储对象或引用

作为Java开发人员,我有以下C++问题.

如果我有类型A的对象并且我想将它们的集合存储在数组中,那么我应该只存储指向对象的指针还是更好地存储对象本身?

在我看来,最好存储指针,因为:1)通过将其指针设置为null,可以轻松删除对象2)节省空间.

c++

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

返回一个指针

我不明白这个例子是如何工作的:

double * GetSalary()  {
  double salary = 26.48; 
  return &salary;
}

main() {
    cout << *GetSalary();  //prints 26.48

}
Run Code Online (Sandbox Code Playgroud)

salary是一个局部变量GetSalary(),因此在从函数返回后,该单元可能被另一个函数覆盖.我没有看到如何返回一个指向局部变量的指针(在堆上没有实例化)可能会起作用.

c++ pointers

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

R中引导库的cv.glm中的成本函数

我正在尝试使用R中引导库中的交叉验证cv.glm函数来确定应用glm逻辑回归时的错误分类数.

该函数具有以下签名:

cv.glm(data, glmfit, cost, K)
Run Code Online (Sandbox Code Playgroud)

前两个表示数据和模型,K表示k倍.我的问题是成本参数,定义为:

cost:两个向量参数的函数,指定交叉验证的成本函数.成本的第一个参数应该对应于观察到的响应,第二个参数应该对应于来自广义线性模型的预测或拟合响应.成本必须返回非负标量值.默认值是平均误差函数.

我想对于分类,有一个返回错误分类率的函数是有意义的:

nrow(subset(data, (predict >= 0.5  & data$response == "no") | 
                  (predict <  0.5  & data$response == "yes")))
Run Code Online (Sandbox Code Playgroud)

这当然在语法上都不正确.

不幸的是,我有限的R知识让我浪费了几个小时,我想知道是否有人可以指出我正确的方向.

r glm cross-validation

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

将整个标头内容添加到Doxygen组

由于它似乎是一项常见的任务,我很难相信如果我想将头文件中的所有doxygen注释添加到组中,我必须这样做

foo.h
 /**
 *\addtogroup fooGroup
 * @{
 */
...
...

...
/**@}*/
Run Code Online (Sandbox Code Playgroud)

有没有办法让这项工作没有@ {评论?

doxygen

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