草庐IT

static_vector

全部标签

【C++】初始化列表、static成员、友元、匿名对象、附练习题

文章目录前言一、构造函数【初始化列表】1.1构造函数体赋值1.2初始化列表1.3explicit关键字二、static成员2.1概念2.2特性三、友元3.1友元函数3.2内部类四、匿名对象4.1拷贝对象时的一些编译器优化五、再次理解类和对象六、练习题6.1求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句6.2计算日期到天数的转换6.3日期差值6.4打印日期6.5累加天数前言我们前面学习了关于类和对象的6个默认成员函数,知道了一个空类中有构造函数和析构函数,通过对对象初始化和对象中进行资源清理,达到初始化和销毁的作用。

c++ - 由于类型不完整,在 static_assert 中使用 std::is_base_of 失败

我想做的是让一些类继承自extention类。问题是extention类必须知道它正在扩展哪个类。这可以像这样简单地实现:templateclassExtention{public:voidcheck()const{std::cout::value{};classBar:publicExtention{};Foo和Bar类显示了扩展的好坏用法。Foo().check();→Extentionisvalid:trueBar().check();→Extentionisvalid:false我想在编译时检查模板的有效性,这让我写了templateclassExtention{static_

c++ - 从 vector 映射中查找并删除 std::function 对象

我目前正在尝试为我的游戏引擎实现一个消息系统。它使用以下形式的函数回调:typedefstd::functionCallback;它维护一个消息列表:mutablestd::vector>messageList;以及签名的回调字典:mutablestd::map>callbackDictionary;用于调用“绑定(bind)”到特定消息类型的所有回调。调用回调函数时,将传递相应的消息。到目前为止一切顺利。为了更好地理解,这里是订阅方法,它允许用户添加一个函数方法,该方法会为订阅类型的每条消息调用。voidMessenger::Subscribe(Message::Typetype,C

c++ - AVX2 根据条件将连续元素扩展为稀疏 vector ? (如 AVX512 VPEXPANDD)

有谁知道如何向量化以下代码?uint32_tr[8];uint16_t*ptr;for(intj=0;j这基本上是一个屏蔽的收集操作。自动矢量化器无法处理这个问题。如果ptr是一个uint32_t*它应该可以直接用_mm256_mask_i32gather_epi32实现.但即便如此,你如何生成正确的索引vector?并且无论如何只使用打包加载并洗牌结果(需要类似的索引vector)会不会更快? 最佳答案 更新答案:主要代码段已重写为函数和解决方案添加了适用于AMD处理器的内容。正如PeterCordes在评论中提到的,AVX-51

c++ - 尝试使用两个单独的 getline() 实例来填充两个单独的 vector

我正在研究thisHackerRankproblem.在我的问题中,我试图使用getline()将两行不同的输入输入到两个单独的vector中以用于组织目的。输入看起来像这样:962015662015这是我的代码:#include#include#include#include#include#include#includeusingnamespacestd;intmain(){vectorexpecDate;vectorretDate;stringfirstLine;stringsecLine;while(getline(cin,firstLine)){stringstreamss(

c++ - CMake Find_Package(PythonLibs): Does CMake give a preference to dynamic or static libraries?

当我运行FindPackage(PythonLibs)时,它首先找到静态python库python3.5m.a,而不是python3.5m.so。这是CMake的预期行为吗?我怀疑它不符合CMakebugreport;然而,这个错误报告是在2005年提交的。13年来情况发生了变化。如果共享库有偏好,那么知道为什么CMake会找到静态库而不是共享库吗?我已经通过使用SET()命令告诉CMake正确的库在哪里用于我自己的构建来解决构建问题。我正在寻找一个可以更好地理解CMake在这种情况下的行为的答案,因为我正在尝试解决不同的problem,并在共享库中找到static对我来说似乎很奇怪。

c++ - 为什么异常不适用于 OSX 上的 gcc7 和 -static-libgcc?

如果我用gcc-7、-static-libstdc++和-static-libgcc编译这个简单的程序;然后在OSX上运行#include#includeintmain()try{throwstd::runtime_error{"abc123"};return0;}catch(conststd::runtime_error&e){std::cout失败,错误代码为134。为什么它不像在linux上使用相同选项编译时那样打印“abc123”? 最佳答案 已在GCC8中修复(-ish);查看对PR86215的更新和相关的PR80556.

c++ - 将一个 STL vector 高效地分配给另一个 STL vector (WSL 问题)

我对完成STLvector分配的时间有疑问。上下文是:我正在将二进制文件读入std::vector像这样:std::vectorread_file(conststd::string&file_path){std::ifstreamstream(file_path);if(!stream.good()){std::cout();}stream.seekg(0,std::ios_base::end);autosize=stream.tellg();stream.seekg(0,std::ios_base::beg);std::vectorvalues(size/sizeof(float))

c++14 static constexpr auto 与 odr 用法

我有以下C++14代码:templatestructTest{staticconstexprautosomething{T::foo()};};这很好,只要T::foo()也是一个constexpr。现在我知道something是ODR使用的,所以我需要提供命名空间声明。我应该使用什么语法?templateconstexprautoTest::something;不起作用。谢谢! 最佳答案 通过using定义的类型名怎么样?templatestructTest{usingsomeType=decltype(T::foo());sta

c++ - 当两个整数 vector 的第一个元素都是负数时,如何正确使用 < 和 > 运算符?

我正在编写一个简单的C++17程序来比较两个整数vector。例如,我有两个vector:a代表数字-1,b25std::vectora={-1};std::vectorb={2,5};if(ab)std::coutb"前一段代码产生的输出是a,而且是正确的。现在让我们考虑以下示例:std::vectora={-1,9};std::vectorb={-1,9,9};if(ab)std::coutb"这里的输出是a同样,但是因为-19>-199我希望它是a>b.有办法解决吗?例如,我想将两个vector转换为整数并进行比较,但我不知道该怎么做。 最佳答案