aligned_storage简单学习

news/2024/7/3 4:45:46
#include <iostream>
#include <type_traits>
#include <string>/*
template< std::size_t Len, std::size_t Align = default-alignment >struct::type aligned_storage;
相当于一个内建的POD类型他的大小是Size他的对齐方式是Align 
*/
template<class  T, std::size_t N>
class static_vector
{typename std::aligned_storage<sizeof(T), __alignof(T)>::type data[N];std::size_t m_size = 0;
public://类似于vector的push_back,使用了变长模板参数//和placement newtemplate<typename ...Args>void emplace_back(Args&&... args){if (m_size >= N)throw std::bad_alloc{};new(data + m_size) T(std::forward<Args>(args)...);++m_size;}const T & operator[](std::size_t pos) const{const T *  ret = reinterpret_cast<const T*>(data + pos);return *ret;}~static_vector(){for (std::size_t pos = 0; pos < m_size; ++pos)reinterpret_cast<T*>(data + pos)->~T();}
};int _tmain(int argc, _TCHAR* argv[])
{std::cout << __alignof(std::string) << std::endl;static_vector<std::string, 10> v1;v1.emplace_back(5, '*');v1.emplace_back(10, '*');std::cout << v1[0] << '\n' << v1[1] << '\n';return 0;
}

 


http://lihuaxi.xjx100.cn/news/240540.html

相关文章

gitlab安装各种坑

架构&#xff1a;源码安装, 数据库用mysql,网站用nginx 坑一.nginx报错 122016/07/19 09:26:11 [crit] 3881#0: *10 connect() to unix:/home/git/gitlab/tmp/sockets/gitlab-workhorse.socket failed (13: Permission denied) while connecting to upstream, client: 192.168.…

1.6 INSERT语句

1.6 INSERT语句正在更新内容&#xff0c;请稍后

把握机缘_机缘巧合,蒙太奇训练以及我的朋友如何使自己失业

把握机缘by Wiley Jones通过威利琼斯 机缘巧合&#xff0c;蒙太奇训练以及我的朋友如何使自己失业 (Serendipity, training montages, and how my friend automated himself out of a job) “No one person’s Hollywood success story has anything in common with anybody e…

form表单的action提交写到js中来,同时onclick事件也写在js中来。其action也可以通过ajax来提交的。...

假如你现在还在为自己的技术担忧&#xff0c;假如你现在想提升自己的工资&#xff0c;假如你想在职场上获得更多的话语权&#xff0c;假如你想顺利的度过35岁这个魔咒&#xff0c;假如你想体验BAT的工作环境&#xff0c;那么现在请我们一起开启提升技术之旅吧&#xff0c;详情请…

51单片机编码自学_这是9个月的自学式编码看起来像什么

51单片机编码自学by Stephen Mayeux斯蒂芬马约(Stephen Mayeux) 这是9个月的自学式编码看起来像什么 (Here’s What 9 Months of Self-Taught Coding Looks Like) 只是划伤表面 (Just Scratching the Surface) Today marks 9 months since I embarked on my journey as a self…

IE8下不识别indexOf的问题

1、为Array原型添加indexOf方法(如果学过面向对象,相当于给Array类添加实例方法),方法体如下: //添加数组IndexOf方法 if (!Array.prototype.indexOf){Array.prototype.indexOf function(elt /*, from*/){var len this.length >>> 0;var from Number(arguments[1])…

配深度学习环境要注意的不多,也就

1. 使用nvcc -V命令查看cuda版本&#xff0c;再在官网选择对应版本的pytorch。(是的不要根据python的版本去选择pytorch指令) 2. 用conda安装pytorch可能一直有cpuonly的玄学问题。(哪怕选择的是CUDA版本的pytorch安装命令)改用pip安装。 3. torchtext不会被顺带安装&#xf…

配置Tomcat和在Eclipse中创建Web工程

配置Tomcat服务器信息&#xff1a;在Tomcat的安装目录下有一个conf目录&#xff0c;里面存放着Tomcat服务器的配置文件&#xff0c;其中最为核心的配置文件是server.xml&#xff0c;在这个文件里我们可以配置服务器的各种参数&#xff0c;例如超时时间、连接数量、端口配置等等…