小编Kar*_*rus的帖子

使用sizeof而不是literal

每当我看到malloc别人的代码时,它通常使用sizeof(short)sizeof(double)等等来帮助定义要分配的内存大小.为什么他们不只是用这两个例子用2或替换那些表达式8

c c++

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

Cmake 未使用“target_link_directory”正确添加目录

我是 Ubuntu,我正在学习 cmake 和 make,只是尝试一个简单的例子。我有两个目录:srcbuild. 在 中src,我有三个文件:main.cppcamera.hppCMakeLists.txt,其中(仅)包含以下文本:

add_executable(test main.cpp)
target_link_directory(/home/karnivaurus/Libraries)
target_link_libraries(test Camera)
Run Code Online (Sandbox Code Playgroud)

在 中/home/karnivaurus/Libraries,我有一个名为 的共享库libCamera.so,我想链接到它。我main.cpp使用这个库中的函数,这些函数在camera.hpp.

现在,在我的build目录中,我运行cmake ../src,然后运行make​​。但是,然后我收到链接器错误,告诉我库中的某些函数存在未定义的引用。如果我搜索 中的所有文件和子目录build,则没有提及libCamera.so.

但是,如果我删除文件target_link_directory中的行CMakeLists.txt,并在指定可执行文件时写入库的完整路径,即target_link_libraries(test /home/karnivaurus/Libraries/libCamera.so),它可以正常编译和链接。

为什么target_link_directory没有按预期工作?

c++ makefile cmake

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

通过引用返回 std::vector 导致分段错误

我有一个函数可以创建一个非常大的 std::vector。返回此向量时,由于其大小,我不想再次复制它。因此,我想返回对该向量的引用。但是,这样做会给我一个分段错误。为什么是这样?解决办法是什么?

这是我的代码:

std::vector<int>& Foo()
{
    std::vector<int> x(100000, 50);
    return x;
}

int main()
{
    std::vector<int> y = Foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

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

在 matplotlib 中设置绘图的纵横比

使用 Matplotlib,我想并排绘制六个图。但是,我希望每个图的纵横比为 1。

如果我运行以下命令:

import matplotlib.pyplot as plt
fig = plt.figure()

for n in range(1, 6):
    fig.add_subplot(1, 6, n)
    plt.axis([0, 4, 0, 4])

plt.show()
Run Code Online (Sandbox Code Playgroud)

然后它显示了沿 x 轴“压扁”的六个图。即使我已将 x 轴和 y 轴设置为相同的长度,也会发生这种情况。

如何使所有图的纵横比为 1?

python matplotlib

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

通过命令行提交BitBucket

我正在尝试使用BitBucket设置一个新项目,并使用命令行提交它...

所以,我用我的用户名"karnivaurus"登录BitBucket网站,并创建了一个名为"foo"的新项目.我在"/ c/bar"的现有目录中包含许多文件,我想开始使用git.按照BitBucket网站上的说明,从命令行(使用Git Bash),我输入:

cd /c/bar
git init
git remote add origin https://karnivaurus@bitbucket.org/karnivaurus/foo.git
Run Code Online (Sandbox Code Playgroud)

然后,我添加所有文件:

git add .
Run Code Online (Sandbox Code Playgroud)

最后承诺:

git commit -m "First commit."
Run Code Online (Sandbox Code Playgroud)

这似乎没问题,有许多消息输出列出了目录中的文件,例如"create mode 100644 myfile.txt".但是,当我回到BitBucket网站时,在"Sources"选项卡下面显示"源目录为空.",并在"提交"选项卡下显示"我没有提交".

我已经尝试刷新并重新登录,但我仍然看不到文件或提交.

为什么没有对BitBucket项目进行这些提交?

git bash bitbucket

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

当有多个着色器程序时使用glClear()

假设我想在两个视口中渲染OpenGL场景.第一个视口渲染彩色图像,第二个视口渲染深度图像.每个都有自己的顶点着色器和片段着色器,每个都有自己的着色器程序.着色器类似,唯一的区别是对于彩色图像,顶点着色基于顶点法线在顶点着色器中定义,而对于深度图像,顶点颜色基于顶点深度在片段着色器中定义.要执行渲染,我glUseProgram()是颜色着色器程序,然后绘制颜色场景,然后glUseProgram()绘制深度着色器程序,并绘制深度场景.

我不确定的是,glClear()当有两个着色器程序时,它是如何工作的.我是否需要在每个渲染循环中调用它两次 - 一次在渲染彩色图像之前,一次在渲染深度图像之前?当我只召唤一次它似乎工作,但这对我来说似乎很奇怪.我原以为每个着色器程序一次写入颜色和深度缓冲区.因此,在渲染深度图像时,它会留下渲染彩色图像的缓冲区......但似乎并非如此.有人可以向我解释一下吗?谢谢!

opengl graphics glsl

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

img.click()函数的数组

我有两个图像,image_0和image_1,当点击每个图像时,我希望它显示一个警告,说明该图像的ID.为此,我创建了一个存储这些函数的数组(由于我以前的问题,这是必要的:https : //stackoverflow.com/questions/41003122/looping-in-jquery-only-remembers-last-iteration?noredirect = 1#comment69215730_41003122).

下面的代码显示了我的尝试.但是,当我点击任一图像时没有任何反应.为什么?

HTML:

<img id="image_0" src="http://placehold.it/350x150" width="300">
<img id="image_1" src="http://placehold.it/350x150" width="300">
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$(document).ready(function()
{
    // The number of images shown
    num_images = 2

    // List of functions for each thumbnail click.
    var image_click_functions = new Array(num_images);

    // Define the function for when the thumbnail is clicked
    function CreateImageClickFunction(image_id)
    {
        return function() { alert(image_id) };
    }

    // Loop through all images, and define the click functions
    for (i = 0; i < num_images; i++)
    { …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

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

使用NumPy交换数组维度

当我用PIL加载图像并将其转换为NumPy数组时:

image = Image.open("myimage.png")
pixels = np.asarray(image)
Run Code Online (Sandbox Code Playgroud)

数据存储为[x] [y] [通道].即,像素[3,5,0]的值将是(3,5)像素,以及该像素的红色分量.

但是,我使用的库需要图像格式为[channel] [x] [y].因此,我想知道如何进行这种转换?

我知道NumPy有一个reshape功能,但这实际上并不允许你根据我的需要"交换"尺寸.

有帮助吗?谢谢!

python numpy

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

通过索引数组对单元格数组重新排序

假设我有一个单元格数组x和一个整数数组y

x = {'apple', 'orange', 'banana', 'pear'};
y = [2 4 3 1];
Run Code Online (Sandbox Code Playgroud)

实际上,y代表的索引x。我现在想zx这些索引的顺序指定的元素重新排序来创建一个单元格数组。这会给我:

z = {'orange', 'pear', 'banana', 'apple'};
Run Code Online (Sandbox Code Playgroud)

我可以在一行中执行此操作而不必遍历每个元素并将其z依次放置吗?

matlab cell-array matrix-indexing

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

转换单元格数组的索引列表

我有一个数组x:

x = [2, 1, 2, 3, 3, 2]
Run Code Online (Sandbox Code Playgroud)

我也有一个单元格数组y:

y = {'alpha', 'beta', 'gamma'}
Run Code Online (Sandbox Code Playgroud)

实际上,x是一个索引列表,其中每个索引都表示一个元素y.我现在想要创建另一个单元格数组z,其中每个索引x都替换为相应的元素y,以提供以下内容:

z = {'beta', 'alpha', 'beta', 'gamma', 'gamma', 'beta'}
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

matlab cell-array matrix-indexing

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

创建一个动态分配的std :: vectors数组

要创建动态分配的数组,我使用:

int *x = new int[100];
Run Code Online (Sandbox Code Playgroud)

这将创建一个包含100个int元素的数组。

但是,如果我使用:

std::vector<int> *x = new vector<int>(100);
Run Code Online (Sandbox Code Playgroud)

这还会创建一个包含100个int元素的数组。但是为什么不创建100个vector<int>元素的数组呢?我该怎么做呢?

c++

-2
推荐指数
2
解决办法
3026
查看次数