Why do I need std::get_temporary_buffer?

前端 未结 6 630
眼角桃花
眼角桃花 2020-12-12 20:28

For what purpose I should use std::get_temporary_buffer? Standard says the following:

Obtains a pointer to storage sufficient to store up to n adjacen

6条回答
  •  不思量自难忘°
    2020-12-12 20:50

    Microsoft's standard library guy says the following (here):

    • Could you perhaps explain when to use 'get_temporary_buffer'

    It has a very specialized purpose. Note that it doesn't throw exceptions, like new (nothrow), but it also doesn't construct objects, unlike new (nothrow).

    It's used internally by the STL in algorithms like stable_partition(). This happens when there are magic words like N3126 25.3.13 [alg.partitions]/11: stable_partition() has complexity "At most (last - first) * log(last - first) swaps, but only linear number of swaps if there is enough extra memory." When the magic words "if there is enough extra memory" appear, the STL uses get_temporary_buffer() to attempt to acquire working space. If it can, then it can implement the algorithm more efficiently. If it can't, because the system is running dangerously close to out-of-memory (or the ranges involved are huge), the algorithm can fall back to a slower technique.

    99.9% of STL users will never need to know about get_temporary_buffer().

提交回复
热议问题