相关疑难解决方法(0)

将矢量追加到矢量的最佳方法

std::vector<int> a;
std::vector<int> b;
std::vector<int> c;
Run Code Online (Sandbox Code Playgroud)

我想通过附加b's和c's元素来连接这三个向量a.哪种方法最好,为什么?


1)使用vector::insert:

a.reserve(a.size() + b.size() + c.size());
a.insert(a.end(), b.begin(), b.end());
a.insert(a.end(), c.begin(), c.end());
b.clear();
c.clear();
Run Code Online (Sandbox Code Playgroud)

2)使用std::copy:

a.reserve(a.size() + b.size() + c.size());
std::copy(b.begin(), b.end(), std::inserter(a, a.end()));
std::copy(c.begin(), c.end(), std::inserter(a, a.end()));
b.clear();
c.clear();
Run Code Online (Sandbox Code Playgroud)

3)使用std::move(from C++11):

a.reserve(a.size() + b.size() + c.size());
std::move(b.begin(), b.end(), std::inserter(a, a.end()));
std::move(c.begin(), c.end(), std::inserter(a, a.end()));
b.clear();
c.clear();
Run Code Online (Sandbox Code Playgroud)

c++ vector append std c++11

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

矢量数据如何对齐?

如果我想std::vector用SSE 处理数据,我需要16字节对齐.我怎样才能做到这一点?我需要编写自己的分配器吗?或者默认分配器是否已经与16字节边界对齐?

c++ sse vector alignment allocator

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

C++ OpenMP Parallel For Loop - 替代std :: vector

基于这个线程,OpenMP和STL向量,哪些数据结构是并行for循环中共享 std :: vector的好选择?主要方面是速度,矢量可能需要在循环期间调整大小.

c++ std openmp

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

在对数时间内平行减少

给定n部分和,可以将log2并行步骤中的所有部分和相加.例如,假设有八个线程与八个部分和:s0, s1, s2, s3, s4, s5, s6, s7.这可以在这样的log2(8) = 3连续步骤中减少;

thread0     thread1    thread2    thread4
s0 += s1    s2 += s3   s4 += s5   s6 +=s7
s0 += s2    s4 += s6
s0 += s4
Run Code Online (Sandbox Code Playgroud)

我想用OpenMP做这个,但我不想使用OpenMP的reduction子句.我想出了一个解决方案,但我认为可以使用OpenMP的task子句找到更好的解决方案.

这比标量加法更通用.让我选择一个更有用的情况:一个数组减少(见这里,这里,并在这里为更多关于阵列减少).

假设我想在阵列上进行数组缩减a.下面是一些代码,它们为每个线程并行填充私有数组.

int bins = 20;
int a[bins];
int **at;  // array of pointers to arrays
for(int i = 0; i<bins; i++) a[i] = 0;
#pragma omp …
Run Code Online (Sandbox Code Playgroud)

c algorithm parallel-processing reduce openmp

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

标签 统计

c++ ×3

openmp ×2

std ×2

vector ×2

algorithm ×1

alignment ×1

allocator ×1

append ×1

c ×1

c++11 ×1

parallel-processing ×1

reduce ×1

sse ×1