Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。

6
C ++,将副本设置为vector
我需要复制std::set到std::vector: std::set <double> input; input.insert(5); input.insert(6); std::vector <double> output; std::copy(input.begin(), input.end(), output.begin()); //Error: Vector iterator not dereferencable 问题出在哪里?
146 c++  copy  stdvector  stdset 

1
如果static_cast无效值枚举类会发生什么?
考虑以下C ++ 11代码: enum class Color : char { red = 0x1, yellow = 0x2 } // ... char *data = ReadFile(); Color color = static_cast<Color>(data[0]); 假设data [0]实际上是100。根据标准设置的颜色是什么?特别是如果我以后再做 switch (color) { // ... red and yellow cases omitted default: // handle error break; } 标准是否保证会违约?如果不是,在这里检查错误的正确,最有效,最优雅的方法是什么? 编辑: 作为奖励,标准是否对此做了任何保证,但带有简单的枚举?
146 c++  c++11 


8
uint8_t无法使用cout打印
关于在C ++中使用整数,我有一个奇怪的问题。 我编写了一个简单的程序,该程序将一个值设置为一个变量,然后将其打印出来,但是它没有按预期工作。 我的程序只有两行代码: uint8_t aa = 5; cout << "value is " << aa << endl; 该程序的输出是 value is 即,它为打印空白aa。 当我更改uint8_t为uint16_t上面的代码时,它的工作原理很吸引人。 我使用的是64位Ubuntu 12.04(精确的穿山甲),我的编译器版本为: gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
146 c++ 

3
在C / C ++预处理器中,在其自己的行上加一个井号/井号(#)的目的是什么?
我一直在看Boost库的源代码,并且我注意到通常有单个磅号,但没有附加任何预处理程序指令。我通读了GCC预处理程序手册和规范指南,但找不到任何相关内容。 (1) #ifndef BOOST_CONFIG_HPP (2) # include <boost/config.hpp> (3) #endif (4) # (5) #if defined(BOOST_HAS_PRAGMA_ONCE) (6) # pragma once (7) #endif 在第4行,英镑符号后面没有任何内容。这有什么作用?它在C预处理程序(CPP)规范中定义吗? 由于Boost是跨平台的库,因此我认为任何CPP都应正确解析它。在整个代码中具有随机的磅/哈希符号会产生什么影响/副作用?
145 c++  c  boost  c-preprocessor 

5
为什么(%256)与(a&0xFF)不同?
我一直认为执行(a % 256)优化程序时自然会使用高效的按位运算,就像我写的那样(a & 0xFF)。 在编译器资源管理器gcc-6.2(-O3)上进行测试时: // Type your code here, or load an example. int mod(int num) { return num % 256; } mod(int): mov edx, edi sar edx, 31 shr edx, 24 lea eax, [rdi+rdx] movzx eax, al sub eax, edx ret 当尝试其他代码时: // Type your code here, …
145 c++  optimization 

4
在成员函数内部的lambda捕获列表中使用成员变量
以下代码使用gcc 4.5.1编译,但不能使用VS2010 SP1编译: #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(),groups.cend(),[grid,&i](pair<int,set<int>> group){ i++; cout<<i<<endl; }); } int main() { return 0; } 这是错误: error C3480: 'puzzle::grid': …




6
在const之前还是const之后?
首先,您可能知道const可以用来使对象的数据或指针不可修改,或两者都不可修改。 const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer 但是,您也可以使用以下语法: Object const *obj; // same as const Object* obj; 唯一重要的事情就是您将const关键字放在星号的哪一边。就我个人而言,我更喜欢const在该类型的左侧指定该数据不可修改,因为我发现从左到右的思维方式它读起来更好,但是哪种语法先出现? 更重要的是,为什么有两种正确的方式来指定const数据?在哪种情况下,相对于另一种情况,您更喜欢还是需要? 编辑: 因此,在我出生很久之前就制定了编译器如何解释事物的标准时,这听起来像是一个任意决定。由于const应用于关键字的左侧(默认情况下是?),我猜他们认为添加“快捷方式”以其他方式应用关键字和类型限定符至少在声明更改之前一直没有危害。解析*或&... 我也假设在C中也是这种情况?
145 c++  c  syntax  const 

4
ios_base :: sync_with_stdio(false);的意义 cin.tie(NULL);
包括在内的意义是什么 ios_base::sync_with_stdio(false); cin.tie(NULL); 在C ++程序中? 在我的测试中,它可以加快执行时间,但是是否有一个我应该担心的测试用例呢? 这两个语句是否总是必须在一起,或者第一个语句是否足够,即忽略cin.tie(NULL)? 另外,如果将其值设置为,是否可以同时使用C和C ++命令false? https://www.codechef.com/viewsolution/7316085 上面的代码运行良好,直到我scanf/printf在C ++程序中使用值为true。在这种情况下,它给出了分割错误。这可能是什么解释?
145 c++  c 

1
C ++中“ using”关键字背后的逻辑是什么?
C ++中“ using”关键字背后的逻辑是什么? 它在不同的情况下使用,我正在尝试查找所有这些功能是否具有相同之处,并且有一个原因使用“ using”关键字是有原因的。 using namespace std; // to import namespace in the current namespace using T = int; // type alias using SuperClass::X; // using super class methods in derived class
145 c++  c++11 



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.