小编Tro*_*nda的帖子

存储多个可变大小的 std 数组

我有不同大小的 std::arrays,例如

std::array<int, 5> array_one;
std::array<int, 8> array_two;
std::array<int, 2> array_three;
Run Code Online (Sandbox Code Playgroud)

主要类型始终相同(本例中为 int)。

现在我必须迭代所有这些数组,为了用尽可能少的代码来做到这一点,我想我应该将它们存储在一个数组中,并使用它单独访问每个数组。

伪代码:

std::array array_wrapper = { array_one, array_two, array_three };
Run Code Online (Sandbox Code Playgroud)

但这是行不通的,因为每个数组都有不同的大小。

是否有任何存储类型可以用来“收集”所有数组以便随后单独迭代它们?

c++ c++20

3
推荐指数
1
解决办法
322
查看次数

移动持有 unique_ptr 的类实例

我有一个类实例向量。这些实例中的每一个都有一个到另一个类的 unique_ptr 。由于我从不尝试复制类实例甚至共享指针,我觉得 unique_ptr 比 shared_ptrs 更合适,因为指针不共享,而只能通过类实例访问。

这是不好的做法吗?为什么这行不通?我知道将实例复制到唯一指针是不正确的,但是由于我移动了它,我不明白为什么不允许这样做?

我是否必须创建自定义移动构造函数?它应该怎么做?

一旦从向量中删除对象实例,就应该删除唯一的 ptr,因为没有引用了,对吧?

代码示例以便更好地理解:

class A {
private:
    int number;

public:
    void f() {
        std::cout << "The number is: " << number;
    }
    A(int i) : number{i} {}
    ~A() = default;
};

class B {
    std::unique_ptr<A> good_a;

    B() : good_a{ std::make_unique<A>(1) } {}
    ~B() = default;
};

int main()
{
    std::vector<B> all;

    B my_b(123);

    all.emplace_back(std::move(my_b));

}
Run Code Online (Sandbox Code Playgroud)

c++ unique-ptr

0
推荐指数
1
解决办法
155
查看次数

标签 统计

c++ ×2

c++20 ×1

unique-ptr ×1