std::initialize_list<T>作为返回值

发布时间 2023-04-22 11:38:30作者: windtail

正常情况,我们应该返回一个 vector<T>,但是呢,因为我这是嵌入式,我不想动态开辟。于是我突发其想,返回个intialize_list,在写这个代码时,我就觉得可能不正确,因为intialize_list类中没有个数。抱着试一试的心态,我还是写了这个代码。结果,果然是不正确的。

原因是这样的,intialize_list实际是创建了一个临时的数组,然后把数据的指针和大小,给了initialize_list,返回initialize_list时,实际是在被调函数中创建了一个临时数组,然后把这个临时数组的指针给返回了。当然就不好使了。实际上编译器可以优化这个,至少可以处理一级返回值,但是不幸编译器并没有这样做。