小编smt*_*tsp的帖子

C++中类成员的类和std :: async

我试着写一个类成员,它并行多次调用另一个类成员.

我写了一个简单的问题示例,甚至无法编译.调用std :: async我做错了什么?我想问题就在于我如何传递函数.

#include <vector>
#include <future>
using namespace std;
class A
{
    int a,b;
public: 
    A(int i=1, int j=2){ a=i; b=j;} 

    std::pair<int,int> do_rand_stf(int x,int y)
    {
        std::pair<int,int> ret(x+a,y+b);
        return ret;
    }

    void run()
    {
        std::vector<std::future<std::pair<int,int>>> ran;
        for(int i=0;i<2;i++)
        {
            for(int j=0;j<2;j++)
            {
                auto hand=async(launch::async,do_rand_stf,i,j);
                ran.push_back(hand);    
            }
        }
        for(int i=0;i<ran.size();i++)
        {
            pair<int,int> ttt=ran[i].get();
            cout << ttt.first << ttt.second << endl;
        } 
    }
};

int main()
{
    A a;
    a.run();
}
Run Code Online (Sandbox Code Playgroud)

汇编:

g++ -std=c++11 -pthread main.cpp 
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

Eclipse自动完成功能无法正常工作

eclipse的自动完成功能现在无法正常工作,我搜索了几个小时,但我找不到解决问题的答案.我没有长时间使用它然后打开它后的第一件事是安装SWT和Windows构建器,即使我已经安装了swing.我的意思是,这可能是因为swt和swing引起的一些冲突(我读了一些关于冲突的内容,但如果可能的话,我不会这样做).

奇怪的是,当我按下ctrl + space时它没有显示任何内容但是当我去编辑 - >内容辅助 - >默认(它说它附近的Ctrl +空格)时,它显示需要显示/按需工作的东西.

public class Dsada {
    String sssss;
    public Dsada(){
        sss //pressing ctrl+space is not working,Edit->ContentAssist->Default works fine
    }
}
Run Code Online (Sandbox Code Playgroud)

解决方案不是在Windows-> Preferences - > ...-> Content Assist-> Advanced下勾选/取消某些内容.我检查了"ctrl + space"是否被其他一些未被检查的键盘语言劫持了(这是在mkyong中建议的).

我读了一些关于bug的内容,但我无法理解.我试图删除eclipse并重新安装,但我想一些设置只是留在机器中,所以它不起作用.

提前致谢,

java eclipse autocomplete content-assist

8
推荐指数
5
解决办法
4万
查看次数

如果输入是安全的,是否可以利用易受攻击的功能?

假设我有一个具有缓冲区溢出漏洞的代码,如下所示

int func(const char *str){
    char buffer[100];
    unsigned short len = strlen(str);

    if(len >= 100){
        return -1;
    }
    strncpy(buffer,str,strlen(str));
    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

(取自这个问题)

如果从另一个函数(而不是用户输入)获取输入并且str的长度始终小于100,是否有办法利用此漏洞?

例如

int main() {
    int user_input;
    if (cin >> user_input) {
        if(user_input == 1)
          func("aaaa");
        else 
          func("bbbb");
    }
}
Run Code Online (Sandbox Code Playgroud)

假设代码中没有其他漏洞.

只是一个假设的问题,任何想法?

c c++ security exploit

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

Matlab与此代码中的c ++速度比较

我编写了简单的C++代码并在C++中进行了测试,然后我为MATLAB调整了相同的代码,mex file_name.cpp并在MATLAB中使用与C++相同的编译器运行相同的代码.这是代码:

int k;
for(int j = 0; j < 100;j++){
    for(int i = 0; i < 10000000; i++){
        k++;
    }
    k/=10000000
}
Run Code Online (Sandbox Code Playgroud)

这是MATLAB代码:

double a;int j;int i;
double* k;

for(j = 0; j < 100;j++){
    for(i = 0; i < 10000000; i++){
        a = a+1;
    }
    a = a / 10000000;
}

plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL);
k = mxGetPr(plhs[0]);
*k = (double)a;
Run Code Online (Sandbox Code Playgroud)

我已经为MATLAB编辑了这段代码,即改为合适的类型,添加MEX函数等,结果在MATLAB中约为900ms,而在C++中则为3100 ms.

我不明白的是两个都运行相同的代码和相同的编译器(在MATLAB中我mex -setup在命令行中编写,选择的Visual Studio编译器作为MEX编译器),但是,MATLAB的速度提高了大约3.5倍.

什么是MATLAB做得更快,C++没有做什么?有人可以解释一下为什么会有这么大的差异吗?我尝试过其他一些代码,在MATLAB中都快了3-6倍.

我的PC是64位Windows 7,Visual Studio 2010用于C++,MATLAB是R2012b. …

c++ performance matlab visual-studio-2010

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

在 OpenCV python 中测量点到掩模的距离

假设我有一个物体和一个点的掩模。我想找到对象蒙版最接近该点的点。

例如,在我的绘图中,有一个对象,图像中的蓝色形状(假设内部也是对象蒙版的一部分)。红点是我想要找到距对象蒙版最近距离的点。

图像

所以,我想找到粗绿线,因为它是到面罩的最短距离,而不是其他线(粉色、橙色等)。我可以使用以下方法之一来执行此操作:

  • 一种低效的方法是使用类似的方法(暴力)找到所有像素到该点的距离。
  • 另一种方法是创建许多朝向掩模的具有 epsilon 角度差的线,并找到该线上最近的点,这也不是很好。
  • 我可以在边缘上创建线条,并找到对象边界上每条线条的最近点。(这可能没有我想象的那么容易,首先我需要找到外边框等)

但这些方法都不是优雅的。我想知道什么是更优雅、最有效的方法来确定这一点?

python algorithm opencv mask image-processing

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

如何播种randn函数opencv

我想播种randn功能,但我无法做到.

srand(time(NULL));
Mat mymat = Mat::zeroes(1024,1024,CV_32F);
randn(mymat,0,1); 
Run Code Online (Sandbox Code Playgroud)

它不应该给我随机垫,名字mymat,其中mean = 0,和variance = 1.但它不是那样的.它mymat在每次运行中都是相同的.

这是randn的链接,声称srand工作.

我试图给出不同的数字而不是时间(NULL),但都有相同的输出randoms.我从另一台机器检查了同样的东西,它给第一台机器提供了相同的输出.因此播种不起作用.

谢谢,

c++ random opencv random-seed

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

如何在Matlab上找到稳定视频帧的旋转角度

考虑我有一个稳定的视频帧,其中稳定只通过旋转和平移(没有缩放):

ORI

如图所示,图像的右侧是先前像素的对称,即旋转后的黑色区域被对称填充.我添加了一条红线,表明它更清楚. 红线

我想找到我稍后会使用的旋转角度.我可以通过SURF或SIFT功能完成此操作,但是,在实际情况下,我不会有原始帧.

我可能会通过蛮力找到角度,但我想知道是否有更好更优雅的解决方案.注意,对称部分的强度值与原始部分的精度值不完全相同.我已经检查了一些值,例如,V字的键盘上的右上像素是 [51 49 47]原始部件而是[50 50 47]对称拷贝,这意味着相应的像素不被保证是相同的RGB值.

我将在Matlab或python上实现它,并使用完成视频稳定ffmpeg.

编辑:我只有稳定的视频,无法访问原始视频或由ffmpeg生成的文件.

任何帮助/建议表示赞赏,

python matlab matrix image-rotation image-stabilization

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

opencv函数实现

我想知道opencv如何对矩阵进行运算。例如,当我编写代码时

cv::add (Mat mat1, Mat mat2, Mat &result)
Run Code Online (Sandbox Code Playgroud)

使用两个for loops1000x750 图像大约需要 120-130 毫秒。但使用opencv add函数需要6-7毫秒。有谁知道他们的伎俩是什么?我想学习它能够编写opencv没有的功能。

我在 opencv 内部搜索并找到这两个 .cpp 文件(第一个第二个),但我不知道我是否正在寻找正确的位置。

我只是想知道如何使用这个力量。有人可以帮助我吗?

谢谢,

c++ opencv function

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

java在内存分配方面的效率比较

这可能是一个重复的问题,但我无法找到我正在搜索的内容.如果存在,抱歉重复.

我想知道如果以下部分代码在内存分配方面是相同的.

//first
int n = some_number;
for(int i = 0; i < n; i++){
    for(int j = 0; j < n; j++){
        int a = something;
    }
}

//second
int i, j, a;
for(i = 0; i < n; i++){
    for(j = 0; j < n; j++){
        a = something;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道,如果java 在第一个代码中分配变量a n ^ 2次j n次,或者两者仅在第二个代码中分配一次.

我在java中尝试了几次,但结果不一致,就像在一次试验中,第一次是8秒,第二次是9秒,在另一次试验中反过来.所以,我想确定它们是否相等,

谢谢

java performance memory-management memory-efficient

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

如何使用OpenCV,c ++以优雅的方式检索偶数/奇数索引中的值?

考虑一下,我有以下矩阵

0   1  2  3  
4   5  6  7  
8   9 10 11  
12 13 14 15  
Run Code Online (Sandbox Code Playgroud)

我想在不使用for循环的情况下检索偶数索引中的值(x和y索引都是偶数).

0  2
8 10
Run Code Online (Sandbox Code Playgroud)

我有大尺寸的图像(许多5000*5000 +灰度矩阵).使用for循环似乎不是最好的方法.我想听听是否有比循环更好的方法.

我尝试使用以下掩码,然后进行操作,但效率不高,因为我需要做4*n ^ 2乘法而不是n ^ 2(假设原始图像是2n*2n)

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

请注意,我在矩阵上执行多个操作.任何帮助表示赞赏.

提前致谢,

c++ opencv matrix size-reduction

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

复杂的矢量指针

vector <unordered_map <string, DomainInfo *> *> victimDomains;

这是什么意思?

我得到了第一颗星(DomainInfo*),但第二颗是什么?

让我们说DomainInfo有两个属性IDname.如果我想把第二个元素放在DomainInfo第三个unordered_mapvictimDomains我怎么称它?我的问题不正确吗?

谢谢,

c++ pointers unordered-map vector

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

以下c ++代码返回什么?

我有一段代码需要理解.但是我迷失了一点.这是代码:

typedef unordered_map <string, TimeStampSet *> HIEMap;
typedef set <TimeStamp> TimeStampSet;

struct HostInfo {
    HostActivity *hostActivity;
    HIEMap *hieMapArr;
};

typedef unordered_map <uint32_t, HostInfo *> HostInfoMap;

HIEMap::iterator hieMapIt;

void method(...){
    for (hieMapIt = hostInfoIt -> second -> hieMapArr -> begin();
         hieMapIt != hostInfoIt -> second -> hieMapArr -> end();
         hieMapIt = nextMapIt)
    {
        if (hieMapIt -> second == NULL) {
           //what does *hieMapIt -> second* returns?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

什么hieMapIt -> second回报?我有点迷茫.

这不是所有代码,都有初始化等等.但是我没有把所有的代码放在这里.

谢谢,

c++ types iterator unordered-map map

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