小编spu*_*rra的帖子

C++中+ =和= +之间的差异

在用C++编程时,我经常混淆"+ ="和"= +",前者是我实际意思的算子.Visual Studio似乎同时接受它们,但它们的行为却不同,并且是我很多bug的来源.我知道a + = b在语义上等同于a = a + b,但是"= +"是做什么的?

c++ operators

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

将功能应用于图像的每个像素

OpenCV中是否有一种方法可以采用输入矩阵,输出矩阵和函数,并将此函数应用于每个像素?例如,“检查像素值,如果它低于某个阈值,则将其设置为0,否则保持该值”之类的功能

我知道我可以遍历矩阵的像素并自己应用该函数,只是想知道是否有一个函数可以为我省掉这笔工作。

c++ opencv image-processing

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

Lua - 函数中的局部变量范围

我有以下功能

function test()

  local function test2()
      print(a)
  end
  local a = 1
  test2()
end

test()
Run Code Online (Sandbox Code Playgroud)

这打印出零

以下脚本

local a = 1
function test()

    local function test2()
        print(a)
    end

    test2()
end

test()
Run Code Online (Sandbox Code Playgroud)

打印1.

我不明白.我认为声明一个局部变量使它在整个块中有效.由于变量'a'在test() - 函数范围内声明,并且test2() - 函数在同一范围内声明,为什么test2()不能访问test()局部变量?

lua scope local-variables

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

"<</>>"C++中的运算符

因为我在Google上找不到任何东西,因为他们不知道接受搜索词">>",我决定在这里问一下.

首先,不,我不是指按位移位运算符.这是不同的.我已经看到它出现在一些代码中,如果它是一个移位运算符就没有意义.

cout << a;就是一个例子.我知道它打印出来了,但"<<"的定义是什么?

或者在我的情况下,我有一个类似于这样的代码:

for(int index=0;index<n;index++)
    inputFile >> StringArray[index];
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

c++ operator-keyword

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

关于C#中的锁定对象

请考虑以下代码:

static void AddItem()
{
    lock (_list) 
        _list.Add ("Item " + _list.Count); //Lock 1

    string[] items;
    lock (_list) 
        items = _list.ToArray(); //Lock 2
    foreach (string s in items) 
        Console.WriteLine (s);
}
Run Code Online (Sandbox Code Playgroud)

如果线程A获得锁定2,并且线程B尝试获得锁定1,那么B是否会获得锁定?考虑两个锁使用相同的锁定对象.

c# locking object thread-safety

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

在Assembly中将值设置为null

我试图将寄存器中的值设置为null,以便稍后测试其他值是否为null.我环顾互联网,检查一下null的表示在IA32中是什么,但是找不到任何正确的东西.

有人可以帮忙吗?

null x86 assembly

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

使用OpenCV sqrt的未处理内存异常

这是我的以下代码:

void filter() {
    Mat kern = (Mat_<char>(3,3) << -1, 0, 1,
                                   -1, 0, 1,
                                   -1, 0, 1);

    Mat kern2 = (Mat_<char>(3,3) <<  1, 1, 1,
                                     0, 0, 0,
                                    -1, -1, -1);


    Mat I = imread("lena.bmp", CV_LOAD_IMAGE_COLOR);
    imshow("Lena1", I);
    Mat J,K;


    filter2D(I, J, I.depth(), kern);
    filter2D(I, K, I.depth(), kern2);

    imshow("Lena2", J);
    imshow("Lena3", K);

    pow(J,2,J);
    pow(K,2,K);
    Mat X = J + K;
    imshow("Test1", X);
    sqrt(X,X);
    imshow("Test2", X);

    waitKey(0);


}
Run Code Online (Sandbox Code Playgroud)

只是简单地尝试显示图像的渐变.但是,在sqrt(X,X)此处,会发生未处理的内存异常.怎么了?

c++ opencv

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

thrust :: max_element比较cublasIsamax慢 - 更有效的实现?

我需要一个快速有效的实现来查找CUDA中数组中最大值的索引.此操作需要执行多次.我最初使用cublasIsamax,然而,它遗憾地返回最大绝对值的索引,这不是我想要的.相反,我使用的是thrust :: max_element,但与cublasIsamax相比速度相当慢.我以下列方式使用它:

//d_vector is a pointer on the device pointing to the beginning of the vector, containing nrElements floats.
thrust::device_ptr<float> d_ptr = thrust::device_pointer_cast(d_vector);
thrust::device_vector<float>::iterator d_it = thrust::max_element(d_ptr, d_ptr + nrElements);
max_index = d_it - (thrust::device_vector<float>::iterator)d_ptr;
Run Code Online (Sandbox Code Playgroud)

载体中元素的数量范围在10'000到20,000之间.thrust :: max_element和cublasIsamax之间的速度差异相当大.也许我在不知情的情况下执行几次内存交易?

c++ performance cuda thrust cublas

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