C++ array初始化需要双层大括号

对于array的初始化我们可以使用列表初始化:

array<int, 8> test = {1,2,3,4,5,6,7,8
};

但是当我们不再使用简单的内置类型array时:

array<pair<int, int>, 8> dirs = {{-1, -1},{-1, 0},{-1, 1},{0, -1},{0, 1},{1, -1},{1, 0},{1, 1},
};

编译器就会报错:No viable conversion from 'int' to 'std::pair<int, int>'
但是如果使用双层大括号,就像这样:

array<pair<int, int>, 8> dirs = {{{-1, -1},{-1, 0},{-1, 1},{0, -1},{0, 1},{1, -1},{1, 0},{1, 1},
}};

编译器就不会报错,是不是很神奇。
经过在网上查阅资料,看到stackoverflow上一个人解释说,array的原型是结构体中的数组:

template<typename T, int size>
struct std::array
{T a[size];
};

因此,产生了需要双大括号的问题:最外面的大括号是给结构体初始化用的,里面的大括号是给数组初始化用的。
但是标准中并没有提到这一点,因此这个可能是编译器的bug

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt for Android环境配置

最近想写一个小APP&#xff0c;但是又不想用Android Studio进行开发&#xff0c;想要用C进行开发&#xff0c;听说Qt可以进行Android开发&#xff0c;就想尝试一下&#xff0c;结果花了一天时间来配置环境。。。而且发现windows下配置环境更简单一些&#xff08;我中途还切换到…

UVa-12333:Revenge of Fibonacci 高精度

之前自己仿照紫书上写了高精度库&#xff0c;完善了乘法、减法&#xff0c;并且通过了和C高精度库GMP的对拍测试&#xff0c;并在一些OJ上过了一些高精度的模板题&#xff0c;代码仓库地址&#xff1a;https://github.com/Edward-Elric233/BigInt 求解思路 题目的意思是求前1…

vim命令笔记

vim折叠函数&#xff1a;https://www.cnblogs.com/zlcxbb/p/6442092.html Vim录制宏及使用&#xff1a;https://www.jianshu.com/p/9d999c72a9f3 将vim与系统剪贴板的交互使用&#xff1a;https://zhuanlan.zhihu.com/p/73984381

Educational Codeforces Round 114总结

绪论 https://codeforces.com/contest/1574/ 以前想要打CF&#xff0c;总是觉得没有时间&#xff0c;要做这个&#xff0c;要做那个&#xff0c;现在时间充裕了一些&#xff0c;想要多打一些CF&#xff0c;但是光打比赛不总结是没有什么帮助的&#xff0c;这是我从以前的ACM训…

UVA - 210:Concurrency Simulator

题目链接&#xff1a;https://vjudge.net/problem/UVA-210 题目分析 就是一道模拟题&#xff0c;但是细节有点多。 写代码两个小时&#xff0c;调试代码用了两天。。。很长时间不刷题了&#xff0c;这道虽然算法简单但是细节满满的题目对我来说是一个很好的热身。 尽量不要去…

UVA - 514:Rails

题目链接&#xff1a;https://vjudge.net/problem/UVA-514 题目分析 题目的意思是给一个栈输入一系列数据&#xff0c;在这个过程中可以出栈&#xff0c;看能否达到某个结果。 刚开始我觉得这个情况好多&#xff0c;因此不是用模拟&#xff0c;而应该观察结果本身。对于结果中…

UVA - 442:Matrix Chain Multiplication

题目链接&#xff1a;https://vjudge.net/problem/UVA-442 题目分析 题目的意思非常简单&#xff0c;就是给定一个矩阵乘法的表达式然后计算就可以了。随便写写 AC代码 #include <iostream> #include <deque> #include <vector> #include <string>…

leetcode869. 重新排序得到 2 的幂

题目连接&#xff1a;https://leetcode-cn.com/problems/reordered-power-of-2/ 题目分析 如果直接顺着题目的思路&#xff0c;得到数字n的全排列&#xff0c;然后再去判断其是不是2的幂是比较复杂的。 我们应该注意到&#xff0c;因为数字是可以随意排列的&#xff0c;因此所…

使用wireshark+ssh+tcpdump远程抓包

因为需要抓取远程服务器上的数据包&#xff0c;又不想使用tcpdump这种命令行工具进行&#xff08;用了wireshark后谁还愿意去看密密麻麻的命令行呢&#xff09;&#xff0c;所以在网上查找了一下使用wireshark远程抓包的方法&#xff0c;在这里记录一下。 原生支持 wireshark…

C++ Variadic Templates(可变参数模板)

本文参考侯捷老师的视频&#xff1a;https://www.youtube.com/watch?vTJIb9TGfDIw&listPL-X74YXt4LVYo_bk-jHMV5T3LHRYRbZoH 以及C primer第五版 相关内容。 可变参数模板函数 //递归的终止条件 void print() {} //Variadic Templates //一般用于递归处理 template <…

Ubuntu修复Fix Busybox Initramfs错误

今天早上我打开电脑&#xff0c;进入Ubuntu系统&#xff0c;结果黑屏了&#xff0c;屏幕显示&#xff1a; BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash) Enter help for a list of built-in commands.(initramfs)然而我并不知道这个是什么意思&#x…

Leetcode第284场周赛

绪论 最近发现Leetcode每周的周赛难度挺适合我的&#xff0c;而且时间也比较友好&#xff08;不像Codeforces每次都是半夜&#xff09;。所以连续参加了三周的周赛。这次才想起来应该记录一下自己的参赛历程。一方面是总结经验&#xff0c;另一方面有了记录就更有动力去提升&a…

Leetcode第286场周赛

绪论 上周因为有事没有参加周赛&#xff0c;这周没有错过。这次周赛拿到了人生第一个AK&#xff0c;参加大大小小的比赛这么多次&#xff0c;从来没有AK过&#xff0c;泪目了。 感觉这次比赛的思维难度对我来讲稍高一些&#xff0c;前三道题就花了一个小时&#xff0c;而以往…

第287场周赛

绪论 虽然是上周日参加的比赛&#xff0c;但是这周没有怎么学习&#xff0c;每天就是玩耍。也导致对周赛的总结迟迟没有进行。想着再拖下去下次周赛都要开始了&#xff0c;在这里补一下。 这场比赛总体比上场简单一些&#xff0c;但是最后一道题因为忘记初始化类内变量导致调试…

第288场周赛

绪论 虽然没有AK&#xff0c;但是不知道为什么排名比以前AK了都靠前。可能是因为最后一道题有些难度&#xff0c;缩小了我和大佬之间的差距。最后一个小时写最后一道题&#xff0c;累死累活想了一个贪心遍历的算法&#xff0c;当时是一直RE&#xff0c;后来下来调了调又WA了。 …

Clion远程部署和运行

绪论 作为Clion的忠实粉丝&#xff0c;现在的我的几乎所有的coding都是通过Clion完成。因为需要在服务器上进行开发&#xff0c;又离不开Clion&#xff0c;就了解了如何通过Clion远程部署和开发。 主要是借鉴了博客&#xff1a;使用Clion优雅的完全远程自动同步和远程调试c。如…

C++ 单例模式 call_once : terminate called after throwing an instance of ‘std::system_error‘

在学习了C中可以使用call_once进行初始化资源后&#xff0c;我就想着写一个单例模板供以后使用。 template<typename T> class SingleTon {using Ptr std::shared_ptr<T>;static Ptr p;static std::once_flag flag;template<typename ...Args>static void …

C++读写锁造成死锁

C14支持std::shared_timed_mutex C17支持std::shared_mutex 前者相比后者支持的操作更多&#xff0c;但是后者相对性能更好。 使用std::lock_guard<std::shared_mutex>和std::unique_lock<std::shared_mutex>互斥访问使用std::shared_lock<std::shared_mutex…

每日一题:449. 序列化和反序列化二叉搜索树

题目分析 题目链接&#xff1a;449. 序列化和反序列化二叉搜索树 觉得序列化很简单&#xff0c;前序遍历、后序遍历、中序遍历、层序遍历等等。其中得到前序遍历和后序遍历是可以通过递归解法反序列化的&#xff0c;觉得这样子做有点复杂。就想着可不可以一次遍历。一次遍历的…

C++高效集合数据结构设计

绪论 在复杂算法实现过程中我们经常会需要一个高效的集合数据结构&#xff0c;支持常数级别的增、删、查&#xff0c;以及随机返回、遍历&#xff0c;最好还能够支持交集、并集、子集操作 哈希集合实现 大家可能很快想到unordered_set&#xff0c;unordered_set由于底层是哈…