vector <vector <?>>到C ++中的数组

T145

我已经阅读了很多关于向量到数组转换的SO线程,但是如何将avector<vector<?>>转换为单个数组?我最近发现了向量的数据功能;可以以某种方式使用吗?

胆小鬼

您在使用.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()必须视为指针数组,而不是2D数组。因此,我们必须手动浏览并展平它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C++:vector<string> 到 char 数组

来自分类Dev

数组中的SIGABRT C ++如何转向<vector>

来自分类Dev

将Vector <float>中的数据复制到Vector <Mat>(Opencv / C ++)

来自分类Dev

c++14 中从“const std::vector<cv::Mat>*”到“std::vector<cv::Mat>*”的无效转换

来自分类Dev

C ++中的Double Vector问题

来自分类Dev

C#中的Vector2i数组

来自分类Dev

C ++ Vector <int>数组初始化

来自分类Dev

如何为Cython(从C ++到Python)实现vector <vector <Obj >>?

来自分类Dev

std :: vector <int>到std :: vector <enum>

来自分类Dev

vector<vector<double>> 到 mxArray 使用 memcpy

来自分类Dev

如何绑定到vector <> :: at?

来自分类Dev

在C ++中返回等于C#的Vector

来自分类Dev

C ++ Vector类似C#中的类

来自分类Dev

std :: vector数组的大小

来自分类Dev

std :: vector数组的大小

来自分类Dev

我可以使用std :: vector <std :: vector <T >>表示C ++中的二维数组吗?

来自分类Dev

将字节数组作为std :: vector <char>从Node.js传递到C ++插件

来自分类Dev

在C ++中合并样板vector <>代码

来自分类Dev

在C ++中遍历vector <string>的结构

来自分类Dev

在C ++中结合char和Vector

来自分类Dev

在C ++中循环遍历vector <string>的结构

来自分类Dev

从C ++中的类的Vector调用函数

来自分类Dev

将原始数组传递到std :: vector的最快方法

来自分类Dev

如何将vector <pair <string,int >>中的字符串复制到vector <string>?

来自分类Dev

从标准输入读取数字到Data.Vector.Unboxed.Vector Int64中

来自分类Dev

C ++:对<vector <int>,vector <int >> p;

来自分类Dev

C ++ vector <vector <int>>开头的保留大小

来自分类Dev

c ++ vector <vector <int >>如何管理内存

来自分类Dev

C ++:对<vector <int>,vector <int >> p;

Related 相关文章

热门标签

归档