给定一个二维表,例如:
struct POD
{
int someData;
float someOtherData;
bool someMoreData;
// Other basic numerical types...
};
我如何有效地用这样的值填充二维表。具体来说(例如在多线程上下文中)以随机顺序,一次填充整行。
在 C 语言中,我会:
我如何有效地将其转换为 C++(理想情况下使用 STL 容器)。一些补充说明/问题:
请注意:
std::vector::reserve
+ std::vector::emplace_back
不起作用,因为表应支持随机顺序初始化/填充。
只做最简单可行的事情:
using LargeTable = std::vector<std::vector<POD>>;
void fillRow(LargeTable& large_table, int row) {
std::vector<POD> temp;
temp.reserve(20); // Allocates memory but does not initialize it.
// call temp.emplace_back or temp.push_back 20 times
large_table[row] = std::move(temp);
}
在顶层,执行以下操作:
LargeTable large_table(50000);
并且以某种方式调用
fillRow
50000 次,无论你想要多少个线程。