【发布时间】:2021-03-11 15:59:16
【问题描述】:
std::unique_ptr<type[]> D{ std::make_unique<type[]>(10'000) };
std::sort(D2[0], D2[10'000], [](auto& a, auto& b)->bool {return a < b; }); //error
我使用std::unique_ptr<[]> 来读取二进制文件。
如果我想对这些数据进行排序,我是否必须制作另一个向量或其他东西?
我不知道如何使用sort func 和unique_ptr<[]>。你能告诉我路吗?
【问题讨论】:
-
请原谅我的好奇,但为什么是
std::unique_ptr<type[]>而不是std::vector<type>或者可能是std::array<type, 10'000>? -
std::sort(&D2[0], &D2[10'000], ...) -
@Someprogrammerdude 不是 OP,但
std::vector<type>可以调整大小,D不能。它没有相关接口或跟踪大小或容量的负担。std::array<type,10000>需要constexpr大小,但D不需要。 -
@FrançoisAndrieux 更重要的是,向量可能会被意外复制。
-
@n.'pronouns'm。
operator[]在调试模式下的某些实现下触发结束迭代器的断言。对于std::vector,它肯定在 Visual Studio 中起作用