微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以在恒定时间内交换 std::array?

如何解决是否可以在恒定时间内交换 std::array?

据我所知,交换 std::vector一个恒定时间操作,因为唯一的指针正在交换,但在 std::array 的情况下,交换是按元素进行的。是否可以交换 std::array 的指针?

抱歉,如果这已经被要求死了。如果是这样,请指出正确的方向,谢谢。

解决方法

您可以将 std::vector 视为沿着这些线

template<typename T>
struct vector {
    T * pointer;
    int N; // well,not really int
    // the several constructors allocate memory,set N,and do other stuff if necessary
    // Other stuff
};

所以这里有你所指的指针,当你交换两个向量时交换的那个。

std::array更像这样

template<typename T,int N> // again,not really int
struct array {
    T elements[N];
    // other stuff
};

所以这里没有指针,只是静态分配的内存。

(学到了 here。)

,

没有“std::array 的指针”。 array 是它的内容;它只指向一个具有 int 成员“指向”该成员的类。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。