小编Kis*_*hal的帖子

区别: std::make_unique<char>(size_t size) 和 std::make_unique<char[]>(size_t size)?

我正在实现循环数组数据结构,其代码如下所示:

struct CircularArrayException : public std::exception {
    std::string msg;

    CircularArrayException(const std::string arg_msg) 
    : msg{"CircularArrayException: " + arg_msg} {}

    const char * what () const throw () {
        return msg.c_str();
    }
};

template <typename T>
class CircularArray {
public:
    const size_t array_size;
    std::unique_ptr<T> uptr_arr;

    size_t occupied_size = 0;
    int front_idx = -1;
    int back_idx = -1;
 
    CircularArray(const CircularArray& ca) = delete;

    CircularArray& operator=(const CircularArray& ca) = delete;

    CircularArray(
        const size_t arg_array_size
    ):  array_size{arg_array_size} {
        uptr_arr = std::make_unique<T>(array_size);
    };
};
Run Code Online (Sandbox Code Playgroud)

实施后,我测试了实施,CircularArray<char> …

c++ c++11 c++14 c++17

4
推荐指数
1
解决办法
84
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1

c++17 ×1