繁体   English   中英

有没有办法在声明时使用缓冲区初始化数组?

[英]Is there a way to initialize an array with a buffer at time of declaration?

基本上,我正在尝试这样做:

char x[] = "hello";
char* y = new char[sizeof(x)](x); // won't work.

演示

有没有办法干净地做到这一点? 没有评论请不要使用原始数组或原始指针。

只需编写一个函数。

template<typename T, size_t N>
T* new_array(T const(&arr)[N])
{
    T* p = new T[N];
    std::copy(std::begin(arr), std::end(arr), p);
    return p;
}

int main()
{
    char x[] = "hello";
    char* y = new_array(x);
}

C方式:

char* y = strdup(x);
free(y);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM