gpt4 book ai didi

arrays - C++ 中的向量<向量> 到数组

转载 作者:行者123 更新时间:2023-12-01 06:12:00 24 4
gpt4 key购买 nike

我在 vector to array 上阅读了很多 SO 主题。转换,但是 vector<vector<?>> 会如何?转换为一维数组?我最近发现了向量的data功能;可以以某种方式使用吗?

最佳答案

您的方向是正确的,.data()成员函数,但这会给你一个 std::vector<T> 类型的对象数组,不是 T 类型的对象数组。要真正展平嵌套向量,您需要自己完成。像这样的东西可能会成功。

// 1. Compute the total size required.
int total_size = 0;
for (auto& vec : vectors) total_size += vec.size();

// 2. Create a vector to hold the data.
std::vector<T> flattened;
flattened.reserve(total_size);

// 3. Fill it
for (auto& vec : vectors)
for (auto& elem : vec)
flattened.push_back(elem);

// 4. Obtain the array
auto ptr = flattened.data();

对于较旧的编译器,您可以像这样迭代向量

for (std::vector<std::vector<T> >::iterator iter = vectors.begin();
iter != vectors.end(); ++iter) {
for (std::vector<T>::iterator iter2 = iter->begin();
iter2 != iter->end(); ++iter2) {
flattened.push_back(*iter2);
}
}

或者只使用普通的旧索引和 .size()成员函数。

在内部,std::vector 持有指向其元素的指针,因此最外层的 data() 在概念上必须被视为指针数组,而不是二维数组。因此我们必须手动遍历并压平它。

关于arrays - C++ 中的向量<向量<?>> 到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29608508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com