C/C++编程笔记:C++中的std :: get_temporary_buffer
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C/C++编程笔记:C++中的std :: get_temporary_buffer,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3059字,纯文字阅读大概需要5分钟。
内容图文
![C/C++编程笔记:C++中的std :: get_temporary_buffer](/upload/InfoBanner/zyjiaocheng/595/36dc5afcb5dd401483f42e432370e82f.jpg)
获取一块临时内存。在C ++ STL库中,有一个函数get_temporary_buffer,该函数主要用于获取临时块。
该函数的大小为n,并返回最大大小为n的可用缓冲区,该缓冲区可以装入物理内存。
此函数用于获取临时性质的内存,该内存主要用于算法的操作,因为某些算法需要额外的空间才能正确执行。
一旦不再需要分配的存储块,则应通过调用return_temporary_buffer将其释放。
句法:
pair(int*, ptrdiff_t) p = get_temporary_buffer(int)(required size)
参数:
n:为其分配了临时内存的T型元素的数量。
ptrdiff_t:它是整数类型。
返回值:该函数返回第一对和第二对对象。分配内存后,第一个包含指向块中第一个元素的指针,第二个包含指向大小的指针。如果未分配内存块,则第一对包含空指针,第二对包含零。
示例1:
要计算数组中的偶数总数并使用get_temporary_buffer打印排序后的数组
// CPP code to demonstrate the get_temporary_buffer
// to sort an array
#include <iostream>
#include <algorithm>
#include <memory>
using namespace std;
void sorting(int b[], int n)
{
int i, c = 0;
for (i = 0; i < n; i++) {
if (b[i] % 2 == 0) {
c++;
}
}
cout << "The total even numbers are: " << c << endl;
cout << "original array :"
<< " ";
cout << "\n";
for (i = 0; i < 10; i++) {
cout << b[i] << " ";
}
cout << "\n";
pair<int*, ptrdiff_t> p = get_temporary_buffer<int>(10);
// copy the contents in temporary buffer with pair
uninitialized_copy(b, b + p.second, p.first);
sort(p.first, p.first + p.second);
cout << "sorted array :" << endl;
for (i = 0; i < p.second; i++) {
cout << p.first[i] << " ";
}
}
// driver program to test above function
int main()
{
int b[] = { 8, 9, 2, 1, 10, 14, 37, 18, 17, 5 };
int n = sizeof(b) / sizeof(b[0]);
sorting(b, n);
return 0;
}
输出:
偶数总数为:5个
原始数组:8 9 2 1 10 14 37 18 17 5
排序数组:1 2 5 8 9 10 14 17 18 37
示例2:
使用get_temporary_buffer和return_temporary_buffer按字母顺序对字符串进行排序
// CPP code to sort the characters
// alphabetically using std::get_temporary_buffer
#include <iostream>
#include <algorithm>
#include <memory>
#include <string.h>
using namespace std;
void sorting(char b[], int n)
{
int i;
pair<char*, ptrdiff_t> p = get_temporary_buffer<char>(n);
// copy the contents in temporary buffer with pair
uninitialized_copy(b, b + p.second, p.first);
// sort char array
sort(p.first, p.first + p.second);
cout << "sorted characters are :" << endl;
for (i = 0; i < p.second; i++) {
cout << p.first[i] << " ";
}
// to release the temporary buffer
return_temporary_buffer(p.first);
}
// driver program to test above function
int main()
{
char str[] = { 'b', 'g', 'y', 'v', 'p' };
int c;
c = strlen(str);
sorting(str, c);
return 0;
}
输出:
排序的字符是:bgpvy
应用:算法通常需要临时空间才能正确执行。它具有非常特殊的用途,STL在内部使用这些算法来处理诸如stable_partition,stable_sort和inplace_merge之类的算法,它们使用额外的临时内存来存储中间结果,并且如果有额外的内存可用,它们的运行时复杂性会更好。
每天学点小知识,希望对你有帮助~
另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~
C语言C++编程学习交流圈子【点击进入】微信公众号:C语言编程学习基地
分享(源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
内容总结
以上是互联网集市为您收集整理的C/C++编程笔记:C++中的std :: get_temporary_buffer全部内容,希望文章能够帮你解决C/C++编程笔记:C++中的std :: get_temporary_buffer所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。