Returning a c++ std::vector without a copy?

后端 未结 3 1815
伪装坚强ぢ
伪装坚强ぢ 2020-12-29 03:48

Is it possible to return a standard container from a function without making a copy?

Example code:

std::vector MyFunc();

...

std::vector&l         


        
3条回答
  •  佛祖请我去吃肉
    2020-12-29 04:22

    If your compiler supports the NRVO then no copy will be made, provided certain conditions are met in the function returning the object. Thankfully, this was finally added in Visual C++ 2005 (v8.0) This can have a major +ve impact on perf if the container is large, obviously.

    If your own compiler docs do not say whether or not it's supported, you should be able to compile the C++ code to assembler (in optimized/release mode) and check what's done using a simple sample function.

    There's also an excellent broader discussion here

提交回复
热议问题