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

手机网站页面尺寸大小企业网站运营推广难做吗

手机网站页面尺寸大小,企业网站运营推广难做吗,广州网页模板建站,什么是网站建设与维护在 C 11 STL 容器中,push/insert > emplace 新的方法,push 和 emplace 的区别在于: 1. push push 通常用于将一个元素添加到容器的末尾(在 std::vector、std::deque 等序列容器中),或者在关联容器中插入…

在 C++ 11 STL 容器中,push/insert => emplace 新的方法,push 和 emplace 的区别在于:

1. push

  push 通常用于将一个元素添加到容器的末尾(在 std::vectorstd::deque 等序列容器中),或者在关联容器中插入一个键值对(如 std::mapstd::set)。

std::vector<int> vec;
vec.push_back(10);  // 将 10 添加到 vector 的末尾

       对于关联容器(如 std::map),push 可能是 insert 的一种实现:

std::map<int, std::string> m;
m.insert({1, "one"});  // 插入键值对

2. emplace

  emplace 是 C++11 引入的一个新方法。它的主要优点是在容器中直接构造元素,而不是先构造好对象再将其插入到容器中。这可以避免不必要的复制或移动操作,从而提高效率。

std::vector<int> vec;
vec.emplace_back(10);  // 直接在 vector 的末尾构造 10

       对于 std::mapstd::setemplace 会通过传递构造函数的参数直接构造元素(键值对),避免了额外的复制或移动操作:

std::map<int, std::string> m;
m.emplace(1, "one");  // 直接在 map 中构造键值对

主要区别:

  1. 元素构造方式

    • push:需要先构造元素,然后将它添加到容器中。
    • emplace:直接在容器内部构造元素,避免了额外的拷贝或移动。
  2. 性能

    • emplace 在某些情况下可以比 push 更高效,因为它避免了不必要的临时对象创建和拷贝。
    • 对于简单类型(如 int),这两者差别不大,但对于复杂类型,emplace 可能会带来性能上的优势。
  3. 使用的场景

    • push 更常见于将已有对象添加到容器中,尤其是当元素类型比较简单时。
    • emplace 更适合在容器中直接构造复杂对象,尤其是在对象构造涉及多个参数时。

总结:

  • push 是将已经构造好的元素添加到容器中。
  • emplace 是直接在容器中构造元素,避免了多余的复制或移动,通常能带来更好的性能。

在需要频繁插入复杂对象时,emplace 通常是更优选择。

代码验证:

class Test
{
public:Test(int a){std::cout << "Test(int)" << std::endl;}Test(int a, int b){std::cout << "Test(int, int)" << std::endl;}Test(const Test& t){std::cout << "Test(const Test&)" << std::endl;}Test(Test&& t){std::cout << "Test(Test&&)" << std::endl;}
};int main()
{Test t1(10);std::vector<Test> v;v.reserve(100);std::cout << "==========================" << std::endl;// 直接插入对象,两个是没有区别的v.push_back(t1);v.emplace_back(t1);std::cout << "==========================" << std::endl;// 直接插入对象,两个是没有区别的v.push_back(Test(20));v.emplace_back(Test(20));std::cout << "==========================" << std::endl;// 给emplace传入Test对象构造所需的参数,直接在容器中进行构建即可v.emplace_back(20);v.emplace_back(30, 40);
}

emplace 代码实现:

// 实现容器的空间配置器
template<typename T>
struct MyAllocator
{T* allocate(size_t size){return (T*)malloc(size * sizeof(T));}template<typename... Types>void construct(T* ptr, Types&&... args){new (ptr) T(args...);}
};template<typename T, typename Alloc = MyAllocator<T>>
class vector
{
public:vector(): m_vec(nullptr), m_size(0), m_idx(0){}// 预留内存空间void reserve(size_t size){m_vec = m_allocator.allocate(size);m_size = size;}// push_backvoid push_back(const T& val){m_allocator.construct(m_vec + m_idx, val);idx++;}void push_back(T&& val){m_allocator.construct(m_vec + m_idx, std::move(val));idx++;}template<typename... Types>void emplace_back(Types&&... args){m_allocator.construct(m_vec + m_idx, std::forward<Types>(args)...);m_idx++;}private:T* m_vec;int m_size;int m_idx;Alloc m_allocator;
};

http://www.yayakq.cn/news/377321/

相关文章:

  • 科研平台网站建设计划南宁网站设计多少钱
  • 临清网站开发跨境电商平台有哪些
  • 公司网站有什么作用名字设计网站
  • seo网站推广方法优化大师平台
  • 监控做斗鱼直播网站wordpress 图片命名
  • 网上报建贵州建设局网站公司做网站的费用
  • 西安 房产网站建设seo导航
  • 网站设计一个页多少钱网页图片加载失败
  • 南宁两学一做网站网站规划具体内容
  • 百度怎么推广自己的网站产品设计ppt
  • 江西企业网站定制wordpress制作主题
  • 陕西省交通建设网站不用下载的行情网站
  • 江西哪里有做电商网站的公司深圳华强北商城网站建设
  • 陕西省西安市制作网站青州网站搭建
  • 大连网站建设解决方案wordpress 调用小工具
  • 四合一网站长沙微交易网站建设
  • 如何做一个网站衡阳北京网站建设
  • 邯郸哪有做网站的公司ie兼容所有网站
  • 天津的网站建设公司哪家好建网站哪家好北京
  • php语言网站开发网站下拉单设计欣赏
  • 做网站百度收录泛微oa办公系统网页版
  • 邢台哪儿做网站便宜个人小程序制作流程
  • 网站建设点击打开指定网页房地产网站做百度推广
  • 我们网站百度快照显示违规内容广州网站建设 易点
  • 创建公司需要什么杭州seo关键词优化哪家好
  • 营销单页网站制作微信分销网站建设费用
  • 政务网站建设云计算中心无人视频在线观看免费播放影院
  • 牡丹区建设局网站世界新闻最新消息
  • 集团网站建设新闻网站开发 高职课本
  • 电脑上怎样进入中国建设银行网站怎么用手机创造网站