大家!
让我们说我正在编写Array类并希望优化构造
data = reinterpret_cast<T*>(new char[sizeof (T) * size]);
for ( int i = 0; i < size; ++i ) {
new(&data[i]) T(some_value);
}
Run Code Online (Sandbox Code Playgroud)
而现在我想知道如何正确释放内存:
delete[] data;
for ( int i = 0; i < size; ++i ) {
data_[i].~T ();
}
我需要在数组中找到第n个最大的元素,目前我正在按照以下方式执行:
std::vector<double> buffer(sequence); // sequence is const std::vector<double>
std::nth_element(buffer.begin(), buffer.begin() + idx, buffer.end(), std::greater<double>());
nth_element = buffer[idx];
Run Code Online (Sandbox Code Playgroud)
但有没有办法在不使用外部缓冲区的情况下找到数组中的第n个最大元素?