c++ - 从对象返回静态大小的数组的最简洁的代码方式是什么?

标签 c++

我遇到这样一种情况,其中一个类包含一个大小为 5 的常量 vector 。我需要该 vector 中的数据作为大小为 5 的数组,因为我们的 std::vector 实现似乎没有使用连续内存(请不要不要争论这个,我知道它应该并且我们已经检查到死)。连续的内存块是必需的,因此我们可以轻松地对内存块进行 uuencode/uudecode(将任意内存块转换为字符串)。

我发现很难返回静态大小的数组。我可以通过引用来完成,也可以通过将静态大小的数组包装在结构中来完成——但两者都有点令人不安。通过引用要求调用代码首先声明数组并将其传递给代码,而另一个选项要求我为此目的制作一个额外的结构。

class A {
    public:
        /*return type*/ GetVectorAsArray(/*params*/) { /* implementation */ }

    private:
        std::vector<X> m_vec;
};

那么,假设我需要调用 GetVectorAsArray,将 m_vec 中的 5 个值返回到调用代码的最简洁方法是什么?您可以在返回类型或参数和实现中放入任何您想要的内容。

最佳答案

boost::array适用于固定大小的数组,您可以随时使用它。它使用连续内存。

稍后编辑:正如评论者正确指出的那样,std::array 在新标准中可用。

关于c++ - 从对象返回静态大小的数组的最简洁的代码方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7353384/

相关文章:

c++ - openCV 动物(小鼠)识别

c++ - 按第一列对多维 vector 进行排序

c++ - 声明/初始化私有(private)嵌套结构的静态成员

c++ - 使用 C++ 发现 ONVIF IP 摄像机

c++ - Qt5 中 http 客户端的 Post 方法

c++ - 什么时候应该使用字符串而不是字符串流?

c++ - 是否有生产者消费者以外的设计模式来描述这种模式?

c++ - C 中的字符串连接问题

c++ - 不能使用 dynamic_cast 从 Base 转换为 Derived

c++ - Codelite 构建仅显示最后一行输出