小编A-A*_*A-A的帖子

使用ggplot的连续和虚线

我有一套坐标

(x, y) = (0, 2), (1, 3), (1, 2), (2, 4)      (this is a simplified example)
Run Code Online (Sandbox Code Playgroud)

每当y坐标增加时,我想用连续线加入坐标.每当y坐标减小时,我想用虚线加入坐标.在上面的例子中,

1.)坐标(0,2)和(1,3)由直线连接,

2.)坐标(1,3)和(1,2)用虚线连接,并且

3.)坐标(1,3)和(2,4)由直线连接.

是否可以在R中使用ggplot来做到这一点?到目前为止,我只能连续加入坐标线.(如果这可能使任何事情变得更容易,那么当x坐标没有变化时,我只会减少y坐标.)

谢谢您的帮助!

r ggplot2

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

实现文件中的C++ Getters-Setters

我对C++比较陌生,我认为我的问题最好通过例子来理解.在我的头文件中,假设我有

class myClass{
    public:
        double getVar1();
        void setVar1(double newVar1);
        void copyVar1(myClass* dat);

    private:
        double var1;
};
Run Code Online (Sandbox Code Playgroud)

在我的实现.cc文件中,在实现copyVar1方法时,我应该这样做

void myClass::copyVar1(myClass* dat){
   var1 = dat->var1;
}
Run Code Online (Sandbox Code Playgroud)

要么

void myClass::copyVar1(myClass* dat){
   var1 = dat->getVar1();
}
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,我使用getter方法代替.两者都可以在Visual C++中正常工作,但我想知道在实践中哪个更好用.

谢谢您的意见!

c++ implementation header getter-setter

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

C++和效率中的大量线程

我目前用C++编写了一个有时使用超过300个线程的程序.在我的程序中,我有一个结构数组,数组的长度等于线程数.假设我有400个结构,因此有400个线程.

在for循环的单次迭代中,我将一个函数应用于400个结构中的每一个,并且该函数在一个线程中执行.因此,我有400个并发运行的线程.(我正在使用boost线程库).

我试图分析我的代码是什么样的(它不是实际的代码):

struct my_struct{
  // Structure's members
};

std::vector<my_struct> my_vec;

void my_fun(my_struct* my_str){
// Operations on my_str
}

int main(){
  std::vector<boost::thread> thr(400);
  for (int k = 0; k < 300; k++){
    for (int i = 0; i < 400; i++){
      thr.at(i) = boost::thread(my_fun, &my_vec.at(i));
      }
    }

    for (int m = 0; m < M; m++){
      thr.at(m).join();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我使用的函数是计算密集型的,从上面的代码中,我使用400个线程进行计算,这样做了300次.有没有更有效的方法来执行此任务?我不确定一次有多少活动线程可能会影响性能.我听说过线程池库,但我不确定它是否会给我带来任何好处.任何帮助表示赞赏.

非常感谢你.

c++ performance multithreading threadpool

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

向量的并行和

有人可以提供一些建议,说明如何通过多线程减少循环运行时的以下内容?假设我还有两个名为'a'和'b'的向量.

for (int j = 0; j < 8000; j++){
    // Perform an operation and store in the vector 'a'
    // Add 'a' to 'b' coefficient wise
}
Run Code Online (Sandbox Code Playgroud)

这个for循环在我的程序中执行了很多次.上面for循环中的两个操作已经过优化,但它们只在一个核心上运行.但是,我有16个核心,并且想要使用它们.

我试过按如下方式修改循环.我没有向量'a',而是有16个向量,并假设第i个被称为a [i].我的for循环现在看起来像

for (int j = 0; j < 500; j++){
    for (int i = 0; i < 16; i++){
        // Perform an operation and store in the vector 'a[i]'
    }
    for (int i = 0; i < 16; i++){
        // Add 'a[i]' to 'b' coefficient wise
    }

}
Run Code Online (Sandbox Code Playgroud)

我在每个for循环中使用OpenMp,在每个内循环之前添加'#pragma omp …

c++ parallel-processing multithreading openmp

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

引用/参考论文中的OpenMP

我正在写一篇论文并使用OpenMP实现了一个算法.由于Visual Studio直接支持OpenMP,我是否需要在我的论文中引用OpenMP?

c++ citations openmp

6
推荐指数
3
解决办法
4497
查看次数

检查c ++中的零或非规范化数字

我目前有一些代码,我必须规范化双精度矢量(将每个元素除以总和).在调试时,我有时会看到向量中的元素都是0.0.如果我然后得到元素的总和,我得到0.0或4.322644347104e-314 #DEN(我最近发现的是非规范化数字).当sum为0.0或非规格化数时,我想阻止对情形进行归一化.我能想到处理这两种情况的唯一方法是检查总和是否小于'epsilon',其中epsilon是一个小数字(但我不确定制作epsilon有多小).

我有两个问题:

  1. 考虑这些案例的最佳方法是什么?
  2. 非规范化数字机器的值是否依赖?

c++ divide-by-zero

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

从用户定义的函数转到 main()

我有3个功能:my_fun1()my_fun2(),和my_fun3()

main()调用my_fun1()哪个调用my_fun2(),哪个调用又调用my_fun3()

根据 中的一些预定义条件my_fun3(),我希望我的程序直接返回到调用main()行的函数my_fun1()

是否有可能直接去my_fun3()main()呢,还是有一些条件增加my_fun2()my_fun1()实现这一目标?

c++ program-entry-point function break

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