当前位置: 首页 > wzjs >正文

招聘网站评估怎么做深圳关键词自动排名

招聘网站评估怎么做,深圳关键词自动排名,用ps制作海报教程方法步骤,东易日盛装饰公司口碑目录 1.In-Place Construction 2.placement new 3.两者的关系 4.实例分析 5.总结 1.In-Place Construction In - Place Construction(原位构造)指的是在已经分配好的内存位置上直接构造对象,而不是先分配内存,再把对象复制或…

目录

1.In-Place Construction

2.placement new

3.两者的关系

4.实例分析

5.总结


1.In-Place Construction

        In - Place Construction(原位构造)指的是在已经分配好的内存位置上直接构造对象,而不是先分配内存,再把对象复制或者移动到这块内存。这样做的好处是可以避免不必要的复制或移动操作,提高性能,尤其是对于那些复制或移动开销较大的对象。比如返回值优化(RVO,NRVO),就可以减少对象的拷贝动作。而std::move和移动拷贝构造函数都可以减少临时对象的创建。

        在标准库容器中,很多插入操作都支持原位构造。例如 std::vector 的 emplace_back 方法,它可以直接在容器的尾部构造对象,而不是先创建一个临时对象,再将其移动或复制到容器中。

        示例代码:

#include <iostream>
#include <vector>
#include <string>class MyClass {
public:MyClass(int value, const std::string& str) : data(value), message(str) {std::cout << "Constructed with value: " << data << " and message: " << message << std::endl;}
private:int data;std::string message;
};int main() {std::vector<MyClass> vec;// 原位构造对象vec.emplace_back(42, "Hello, World!"); return 0;
}

在这个例子中,emplace_back 直接在 std::vector 的尾部构造了一个 MyClass 对象,避免了临时对象的创建和移动。

2.placement new

        Placement new 是 C++ 中的一种特殊的 new 表达式,它允许你在指定的内存地址上构造对象。Placement new 的语法是 new (address) Type(arguments),其中 address 是预先分配好的内存地址,Type 是要构造的对象类型,arguments 是传递给构造函数的参数。

应用场景

  • 内存池管理:在使用内存池时,你可以使用 placement new 在预先分配好的内存块上构造对象,以提高内存分配的效率。
  • 嵌入式系统:在嵌入式系统中,有时需要在特定的内存地址上构造对象,这时就可以使用 placement new。

C++ new 和 malloc 的区别?_new分配的内存在哪里-CSDN博客

示例如下:

#include <iostream>
#include <new>class MyClass {
public:MyClass(int value) : data(value) {std::cout << "Constructed with value: " << data << std::endl;}~MyClass() {std::cout << "Destroyed object with value: " << data << std::endl;}
private:int data;
};int main() {// 预先分配内存void* rawMemory = operator new(sizeof(MyClass)); // 使用 placement new 在预先分配的内存上构造对象MyClass* obj = new (rawMemory) MyClass(42); // 显式调用析构函数obj->~MyClass(); // 释放内存operator delete(rawMemory); return 0;
}

在这个例子中,首先使用 operator new 分配了一块足够大的内存,然后使用 placement new 在这块内存上构造了一个 MyClass 对象。最后,需要显式调用析构函数来销毁对象,并使用 operator delete 释放内存。

3.两者的关系

        In-Place Construction底层就是使用placement new来实现的。可以这样理解,In-Place Construction是上层抽象的封装应用,而placement new是底层的真正实现。举一个不太恰当的例子,正如new和 malloc的行为逻辑有些相似,new底层调用了malloc。
        在很多的应的场景下,内存可能需要反复的创建和释放。这很容易产生内存碎片或严重影响效率。那么解决这类问题的前提,可以使用内存池技术;但如果想重复应用一块内存的情况下,则可以考虑使用这种placement new,为了简化和应用上的安全,进行更高层次的抽象封装,实现内存的安全管理。则可以使用In-Place Construction。
        说了这些,哪些常见的情况下会有这种应用呢?
1、STL的容器操作的插入,如提到的vector等的empalce_back和empalce函数
2、内存池固定复用内存,减少动态分配的相关资源消耗,提高效率
3、延迟初始化需要在固定的内存中创建对象,包括模板中的某些参数处理等
4、自定义,可以根据开发者的特定需求进行处理,如程序中反复使用一块儿大的内存等

4.实例分析

下面看一个placement new例子:

#include <iostream>
class PlacementDemo {
public:int value_;PlacementDemo(int value) : value_(value) {}void get() { std::cout << "cur value_: " << value_ << std::endl; }
};
int main() {char buf[sizeof(PlacementDemo)];  void* ptr = static_cast<void*>(buf);  // placement newPlacementDemo* obj = new (ptr) PlacementDemo(1);  obj->get();  obj->~PlacementDemo();//显式调用return 0;
}

再看一个STL容器中In-Place Construction的例子:

#include <vector>
#include <string>
int main() {std::vector<std::string> vec;vec.emplace_back("demo"); //  vector 的尾部内存中原地构造 std::string对象return 0;
}

5.总结

        技术的进步不是一朝一夕完成的,它一定是从需求出发,不断的进行完善,然后被抽象出来。无论是RVO还是各种的内存优化,当然也包括今天提到的原位构造等,它们都是对追求效率和安全的一种演进过程。不管是开发者还是设计者,都要多学习这种优秀的经验,不断的融会贯通,提高自己的整体的水平。
        既要拿来主义,又要明白主义,博采众家之长,这才是学习的最终目的。

推荐阅读:

C++ new 和 malloc 的区别?_new分配的内存在哪里-CSDN博客

http://www.dtcms.com/wzjs/95828.html

相关文章:

  • 专业做网站建设公文库百度登录入口
  • 网站右下角悬浮窗口js代码 兼容各浏览器怎么请专业拓客团队
  • 建筑工程网格优化seo优化需要做什么
  • 企业网站 开源google seo教程
  • 全面的哈尔滨网站建设百度seo发包工具
  • 建设一个类似淘宝的网站百度浏览器在线打开
  • 外贸网站建设及推广搭建网站流程
  • 东莞知名网站建设bt磁力搜索
  • 用discuz好还是WordPress好微信seo是什么意思
  • 多个网站 备案在线排名优化
  • 深圳外贸网站建设哪家好app推广30元一单平台
  • 毕设做网站网络销售好不好做
  • 南海营销网站开发河北软文搜索引擎推广公司
  • 网站策划案怎么写范文windows优化大师电脑版
  • wordpress网站加cnzz互动营销公司
  • 网站建设开发计划书自助建站免费搭建个人网站
  • 免费b2b网站大全免费黄页推广运营怎么做
  • 凯里网站制作建设企业营销型网站
  • 网站应该注意什么万网app下载
  • 创建网站商城全国病毒感染最新消息
  • 做导购网站赚钱吗免费下载百度并安装
  • 如何给自己建设的网站设置登陆用户名和密码网络营销公司招聘
  • 兰州城关区建设局网站2022年最火的新闻摘抄
  • 黑彩网站自己可以做么怎么让百度收录
  • 手机交互网站软文推广代写代发
  • 虎门公司网站建设个人网站模板建站
  • 外贸官网建站百度sem代运营
  • 哈尔滨做网站找哪家好怎么申请域名建网站
  • 安康网站制作网络竞价推广开户
  • 国外做网站的公司广告联盟app下载赚钱