【问题标题】:From vectors to arrays c++从向量到数组 c++
【发布时间】:2012-09-13 21:50:36
【问题描述】:

我有 6 个函数来自一个使用大量向量的信号处理工具箱。由于我的 DSP 上的一些内存问题,我需要改用数组。有没有一种简单的方法可以将向量转换为数组以及使用的函数,即插入、push_back、擦除等?

【问题讨论】:

  • 向量本质上是数组,使用它们不会有任何损失。原始数组容易出错。另外,我怀疑您的记忆问题来自使用矢量。你看过它是从哪里来的吗?
  • 除非您编写自己的数组类,否则您不会在原始数组上拥有 push_back 等函数。
  • 关于内存问题,我尝试创建一个大小为 1024 的向量(本地),但对其他存在的局部变量执行它不适合堆栈。堆栈也被限制为 4k。标量向量和数组之间的大小差异究竟是什么?它也有一些区别,因为我可以轻松地制作那个大小的数组?而且我必须补充一点,我正在内存有限的 DSP 上编程?
  • C++11 有 std::array 类,其接口与 std::vector 类似。

标签: c++ arrays vector signal-processing


【解决方案1】:

你可以使用保证c++向量元素存储在内存中是连续的并使用

Type *array = &vector[0]; 

从向量中获取“指向数组的指针”。

【讨论】:

  • 或者使用data()成员函数。
  • 欢迎来到 SO,@GreyGeek。我将答案格式化为可以接受。您可能想尽快了解 SO 的格式化 :) stackoverflow.com/editing-help
  • @chris: en.cppreference.com/w/cpp/container/vector/data data() 是 C++11 中的新功能,因此他可能还无法访问它。
  • @Borgleader,当然,只是把它放在那里是为了访问基础数据。
  • @shizzle,不能声明向量,占用太多空间?也许您需要使用具有固定数量元素的构造函数,例如 std::vector(4);
猜你喜欢
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多