小编ein*_*ica的帖子

我可以使用std :: vector作为预分配(原始)数组的外观吗?

我从DirectX获取了存储顶点信息的存储位置.处理顶点信息的一种非常方便的方法是使用包含顶点信息的结构的std :: vector <>.

鉴于我有一个指向大缓冲区的指针,我可以使用std :: vector来管理缓冲区中的元素吗?经常构造一个std :: vector使它有自己的地址,这不是我想要的.我可以以某种方式使用操作员放置吗?

c++ vector facade memory-address

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

cudaMemcpyToSymbol与cudaMemcpy为何仍然存在(cudaMemcpyToSymbol)

如其他问题所述并根据链接,您不能再使用此功能的符号名称.现在该功能已经消失,什么时候才能使用它cudaMemCpy?你什么时候想要使用它?什么是权衡或利益?

http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group_ CUDART _MEMORY_gf268fa2004636b6926fdcd3189152a14.html

cuda

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

如果喜欢使用-ffast-math,那么double的好哨兵值

由于gcc选项-ffast-math有效地禁止NaN-/+inf,我在寻找可能的表示下一个最好的选择,NaN在我的性能关键数学代码.理想情况下,如果对(add,mul,div,sub等)进行操作,哨兵值会产生哨兵值,NaN但我怀疑这是可能的,因为我认为这NaN是实现这一目标的唯一价值. -0.0可能不太适合,因为它也被禁用,-ffast-math并可能阻止某些优化,如(x+0.0)等.

也许我的问题应该是,是否有任何方法可以使用NaN或其他"特殊双重",同时能够启用大量的数学优化而不会崩溃?

系统是Linux/x64, gcc 4.8.1.

c double optimization nan fast-math

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

在CUDA内核中使用char变量是否会受到惩罚?

我似乎记得得到提示,我应该尽量避免在CUDA内核中使用char,因为SM喜欢32位整数.使用它们会有一些速度惩罚吗?例如,它做得慢

int a[4];
int b = a[0] + a[1] + a[2] + a[3];
a[1] = a[3];
a2[0] = a[0]
Run Code Online (Sandbox Code Playgroud)

char a[4];
char b = a[0] + a[1] + a[2] + a[3];
a[1] = a[3];
a2[0] = a[0]
Run Code Online (Sandbox Code Playgroud)

在内核代码?

笔记:

  • 我对使用char值进行算术,执行比较以及读取和写入内存的惩罚感兴趣.

c c++ performance types cuda

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

如何处理size_t与std :: size_t?

刚读过:

"std :: size_t"在C++中有意义吗?

我发现::size_t当你使用时,使用不符合标准(虽然我的编译器支持)#include <cstddef>.我想遵守标准,但我不想在std::size_t的所有标准之前.那么,处理这个问题的习惯/流行方式是什么:

  • using std::size_t;
  • 包括<stddef.h>
  • 只是依靠编译支持?
  • 别的什么?

c++ size-t

10
推荐指数
2
解决办法
1800
查看次数

如何在Visual Studio 2017中一次编辑多行

我正在Youtube上关注如何使用bootstrap开发仪表板的一系列视频.该系列中的开发人员使用Sublime Text编辑器.

我注意到有时他会点击多个地方(一个接一个)然后开始打字,而且所有这些地方都会显示他正在输入的内容.我认为这节省了很多时间.

在VS和SSMS中,可以按ALT然后选择将被修改的矩形.但是这个是不同的,因为你可以随机选择几个地方,然后开始输入.

我们在Visual Studio 2017中具有相同的功能吗?

mouse keyboard-input sublimetext visual-studio-2017

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

unique_ptr堆和堆栈分配

原始指针可以指向堆栈或堆上分配的对象.

堆分配示例:

// heap allocation
int* rawPtr = new int(100);
std::cout << *rawPtr << std::endl;      // 100
Run Code Online (Sandbox Code Playgroud)

堆栈分配示例:

int i = 100;
int* rawPtr = &i;
std::cout << *rawPtr << std::endl;      // 100
Run Code Online (Sandbox Code Playgroud)

使用auto_ptr示例堆分配:

int* rawPtr = new int(100);
std::unique_ptr<int> uPtr(rawPtr);
std::cout << *uPtr << std::endl;        // 100
Run Code Online (Sandbox Code Playgroud)

使用auto_ptr示例堆栈分配:

int i = 100;
int* rawPtr = &i;
std::unique_ptr<int> uPtr(rawPtr);      // runtime error
Run Code Online (Sandbox Code Playgroud)

是否有"智能指针"用于指向堆上动态创建的对象?对于C++ 11,我们是否应该继续使用原始指针来指向堆栈分配的对象?谢谢.

pointers smart-pointers heap-memory unique-ptr c++11

10
推荐指数
2
解决办法
5324
查看次数

我应该如何检查基础类型值是否为枚举值?

让我们I成为一个整体类型.现在假设我有一个enum class my_enum_class : I,可能不连续的值.现在我得到了一些I价值.如何检查它是否是枚举的值my_enum_class

类似问题的答案(对于C语言)假设值是连续的,并且可以添加"虚拟"上限值,并检查0和该值之间的范围; 这与我的情况无关.还有另一种方法吗?

c++ enums

10
推荐指数
2
解决办法
623
查看次数

在 CLion 中,如何设置 CMakeLists.txt 选项值?

我正在尝试使用 CLion(最新版本 - 2019.3)来处理我的源存储库,该存储库已经使用了 CMake(即有一个CMakeLists.txt)。现在,该软件包有一些关于构建哪些目标的选项;默认情况下,它只构建一些测试,但如果您将选项设置为ON,则会编译并构建一堆测试。

不幸的是,我不太明白 CLion 在哪里可以让您为其生成的构建子目录设置 CMake 选项值。它真的强迫你使用默认值吗?还是我在主用户​​界面或首选项中遗漏了某些内容?

cmake buildconfiguration clion cmakelists-options

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

如何避免使用 CMake FetchContent 进行更新检查?

全部。

\n

我决定使用新的 cmake 宏来下载外部依赖项。\n我从 Catch2 库的文档中获取了示例代码。

\n
include(FetchContent)\n\nFetchContent_Declare(\n    Catch2\n    GIT_REPOSITORY https://github.com/catchorg/Catch2.git\n    GIT_TAG        v2.13.4\n)\nFetchContent_GetProperties(Catch2)\nif(NOT Catch2_POPULATED)\n    FetchContent_Populate(Catch2)\n    add_subdirectory(${catch2_SOURCE_DIR} ${catch2_BINARY_DIR})\nendif()\n
Run Code Online (Sandbox Code Playgroud)\n

该解决方案效果很好,除了在我离线时重新启动 cmake 的能力(没有 wifi 和移动网络,只有我和我的笔记本电脑)。\n我收到以下错误:

\n
[0/7] Performing update step for 'catch2-populate'\nfatal: \xc2\xabhttps://github.com/catchorg/Catch2.git/\xc2\xbb \xd0\xbd\xd0\xb5\xd0\xb4\xd0\xbe\xd1\x81\xd1\x82\xd1\x83\xd0\xbf\xd0\xbd\xd0\xbe: Could not resolve host: github.com\nCMake Error at /Users/evgeny.proydakov/repository/ihft/build/_deps/catch2-subbuild/catch2-populate-prefix/tmp/catch2-populate-gitupdate.cmake:97 (execute_process):\n  execute_process failed command indexes:\n\n    1: "Child return code: 128"\n\nFAILED: catch2-populate-prefix/src/catch2-populate-stamp/catch2-populate-update \ncd /Users/evgeny.proydakov/repository/ihft/build/_deps/catch2-src && /usr/local/Cellar/cmake/3.20.1/bin/cmake -P /Users/evgeny.proydakov/repository/ihft/build/_deps/catch2-subbuild/catch2-populate-prefix/tmp/catch2-populate-gitupdate.cmake\nninja: build stopped: subcommand failed.\n\nCMake Error at /usr/local/Cellar/cmake/3.20.1/share/cmake/Modules/FetchContent.cmake:1012 (message):\n  Build step for catch2 failed: 1\nCall Stack (most recent call first):\n  /usr/local/Cellar/cmake/3.20.1/share/cmake/Modules/FetchContent.cmake:1141:EVAL:2 (__FetchContent_directPopulate)\n  /usr/local/Cellar/cmake/3.20.1/share/cmake/Modules/FetchContent.cmake:1141 …
Run Code Online (Sandbox Code Playgroud)

c++ cmake catch2

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