小编aat*_*ish的帖子

使用索引元素进行操作时,循环范围不起作用

我不确定如何构建标题,但解释更简单.我正在使用c ++ 11 range for loops(链接).

我写了以下内容:

for(auto &elem:vec){
    elem/=vec[0];
}
Run Code Online (Sandbox Code Playgroud)

哪个编译但不会改变向量'vec'中的任何内容.

另一方面,这有效:

elem0 = vec[0];
for(auto &elem:vec){
    elem/=elem0;
}
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?第一种方法有什么问题?如果有帮助,我的编译器版本是g ++ 4.6.3.

c++ for-loop auto c++11

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

如何在不分配更多存储空间的情况下从数组初始化向量?

从数组初始化向量的直接方法似乎是:

int sizeArr; int * array = getArray(sizeArr);
std::vector<int> vec(array, array+sizeArr);
Run Code Online (Sandbox Code Playgroud)

在这里,我从一个函数获取数组,该函数分配内存中的空间并sizeArr通过引用进行设置。{start edit}不幸的是,该函数不是我编写的,我需要处理C样式数组,然后以某种方式将其转换为向量。(如果可能有效的话)。{结束编辑}

当我初始化时vec,显然我正在为其单独分配空间。如果我不想array再使用数据了,是否可以以某种方式“移动”指向array向量的数据vec,而不为它单独分配任何空间?

c++ arrays vector

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

CUDA使用更少的内存推动reduce_by_key

我正在尝试减少为我的用例计算reduce_by_key所需的内存.与值的数量(约1600万)相比,我有一个相对较少的唯一键(大约100-150).按键缩减示例显示分配给包含结果的device_vectors与输入的大小相同.是否总是有必要这样做?是否可以只分配尽可能多的内存来包含正确的输出?

c++ cuda thrust

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

标签 统计

c++ ×3

arrays ×1

auto ×1

c++11 ×1

cuda ×1

for-loop ×1

thrust ×1

vector ×1