2022-06-16 forrange 动态数组 (C++)

2022-06-16 forrange 动态数组 (C++),第1张

forrange 动态数组

forrange 是 C++ 的一种语法糖,比较方便,当然,不能和 python 比人性化,但已经很贴心了。

有人提出一个问题,为什么动态数组不能 forrange。

那什么可以 forrange 呢?

  1. 值列表 { 1,2,3 …}
  2. 数组
  3. 标准容器,或自己实现的容器类,必须有能返回迭代器的 begin,end 成员。

但动态数组不是数组,它是一段内存,动态数组是指向这段内存头数据的指针,它甚至没有数组的 size,所以你 sizeof 动态数组,返回的是一个指针的 size。

当然,如果你想坑程序的后继维护者,请用:

    int frg[] = {1, 2, 3, 4, 5, 6, 7, 8};

    int *frgp = new int[8];

    memcpy(frgp, frg, 8 * sizeof(int));

    for (const auto &i : *reinterpret_cast<int(*)[8]>(frgp))
    {
        std::cout << i << std::endl;
    }

保证他们摸不着头脑。

所以,别用!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1498187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存