ICode9

精准搜索请尝试: 精确搜索
  • 133: error: in C++98 XXX must be initialized by constructor, not by '{...}'2021-05-12 17:53:43

    这样的问题就是你的编译器是否支持C11标准的问题。 C11相对与C98加了不少东西,比如容器的初始化等,如果用C98标准初始化容器,那真的是很爽的。 首先如果是要用VS,可以去下载一个VS2019,也不大,网速只要过得去十几分钟就下载好了,也就打盘王者的事情。 然后如果是用QT的话,首先你的编译器要

  • Lambda表达式能否降级为C 982019-10-12 04:07:11

    我最近遇到了一个问题,需要将用lambda表达式编写的C 11代码集成到仅支持C 98编译器的旧代码库中.我想出了lambda的两个等效项,例如Macro,函子或函数指针.但是当用捕获翻译lambda时,它们似乎都受到限制.例如一个带有回调的简单通用函数: template <class Fn> void ForEachObject(F

  • 从c 14到c 98的端口字符串插值2019-10-10 04:21:52

    我正在尝试将此答案:Replace N formulas to one (string interpolation)移植到标准c 98实现中. C 14版本: #include <algorithm> #include <iostream> #include <iterator> #include <map> #include <string> using namespace std; int main() { map<str

  • c – std :: namespace中的isnan是什么?更一般地说,什么时候std ::必要,可选或者要避免?2019-10-05 06:16:43

    使用Mingw 4.7.2,我有一个因为调用isnan而无法编译的库. 如果我使用std :: isnan,编译器会说“一切都会好的”,而且我确实设法编译了我的文件. 但是,如果我检查here(编辑:但也许我应该检查here :-)),std ::似乎没有必要.如果我添加它,该文件是否可移植? 更一般地说,对于每种情况都有

  • c – 删除向量和双端队列中项目的时间复杂度2019-09-30 22:09:49

    我已经读过,在std :: vector的末尾添加项目的时间复杂度是分摊常量,并且在std :: deque的顶部和底部插入项目是常量.因为这两个容器都有一个随机访问迭代器,因此访问元素任何指数都是不变的.如果我有任何这些事实错误,请告诉我.我的问题是,如果访问std :: vector或std :: deque中的

  • c – 如何用宏做static_assert?2019-09-26 10:04:33

    我曾尝试使用this suggestion来执行静态断言,但如果我在模板的方法中使用它,则不会出现编译错误. 示例如下: #include <iostream> #define STATIC_ASSERT(expr, msg) \ { \ char STATIC_ASSERTION__##msg[(expr)?

  • c – 使用boost :: variant遍历树节点的模板2019-09-01 09:18:46

    这是我遍历节点树的设计: struct Leaf1{}; struct Leaf2{}; struct Leaf3{}; struct Leaf4{}; struct Leaf5{}; typedef boost::variant< Leaf4, Leaf5 > Node3; typedef boost::variant< Leaf2, Leaf3, Node3> Node2; typedef boost::variant< Node2, Leaf1 > Node1

  • c – 迭代boost :: shared_array2019-09-01 05:16:18

    你会如何迭代boost :: shared_array中的项目?你会对它做一个get()并使用原始指针作为迭代器吗?解决方法:由于你已经使用了boost,可能是这样的: #include <boost/shared_array.hpp> #include <boost/range.hpp> #include <iostream> int main() { boost::shared_array<int> arr(n

  • c – 有效的编程:如何在不编写实际谓词的情况下使用find_if2019-08-29 16:16:05

    说我有以下定义: typedef std::vector<std::string> StringVec; typedef std::set<std::string> StringSet; 和以下对象: const StringVec& v const StringSet& s 我想使用find_if来查找s中存在的v中的第一个字符串. 什么是我最好的行动方案?这可以通过绑定一些函数调用来完成,以

  • c – 为什么在SFINAE期间需要参数中的指针?2019-08-27 23:08:39

    为什么我需要*来使检查器成为指针在线 模板< typename C> static yes test(checker< C,& C :: helloworld> *); 为了使编译时间扣除正常工作,输出1 0? 当我删除*时,输出为0 0 #include <iostream> struct Generic {}; struct Hello { int helloworld() { return 0; } }; // SFIN

  • C 98替代std :: stoul?2019-08-24 07:16:34

    我在这里用这段代码遇到了麻烦: unsigned long value = stoul ( s, NULL, 11 ); 这给了我c98的这个错误 error: 'stoul' was not declared in this scope 它适用于C 11,但我需要在C 98上使用它.解决方法:您可以使用cstdlib中的strtoul: unsigned long value = strtoul (s.c_str(

  • C我应该完全限定我的变量类型吗?2019-07-29 11:17:11

    我正在尝试编写最多适合80列的代码行.因此,我想知道完全限定我的变量类型是否真的是强制性的?假设以下实现: //Baz.h namespace loggingapi { namespace attributes { class Baz {}; }} // namespaces // Bar.h namespace loggingapi { namespace attributes { cla

  • 投掷析构函数可由C 98和C 1x编译.有没有更好的办法?2019-07-27 11:09:13

    有没有一种干净的方法或解决方法来实现一个可以通过c 98和c 1x编译器编译的抛出析构函数,这些编译器是跨平台的并且不会产生警告? 特定 有一个表示错误代码的遗留类,如果未处理则抛出该错误代码.为此,它使用了一个抛出析构函数. 目标 一个跨平台(g,VC)实现,编译和使用旧的c 98编译器

  • c – 过滤std :: string的std :: vector2019-07-25 20:05:38

    如何生成输出向量,根据输入向量是否以某个子字符串开头来过滤输入向量.我正在使用c 98和boost. 这是我得到的: std::string stringToFilterBy("2"); std::vector<std::string> input = boost::assign::list_of("1")("2")("22")("33")("222"); std::vec

  • 如何在C 11/98中跳过参数2019-07-25 00:07:54

    说我有一个功能: void function() { cout << "Hello!" << endl; } 我有一个算法调用一个函数并传递两个参数: template <class F> void my_algorithm(F f) { // ... f(x, y); // ... } 如何通过操作函数或函数对象将函数传递给my_algorithm,而无需手动创建包装器

  • 在C89和C中使用空参数调用宏是否真的是未定义的行为?2019-07-24 22:06:37

    考虑以下计划: #include <iostream> #define add(s,m,a) ( s + m + a + 0 ) int main() { std::cout<<add(3,4,5)<<'\n'; std::cout<<add(15,30,)<<'\n'; std::cout<<add(10, , 33)<<'\n'

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有