草庐IT

行为树

全部标签

c++ - 尝试使用 {} 和 std::make_pair() 交换两个变量时的不同行为

我试图按照以下代码使用std::tie()交换两个变量(我知道std::swap,我只是在尝试这是出于好奇):#include#includeusingstd::cin;usingstd::tie;usingstd::cout;usingstd::endl;usingstd::make_pair;intmain(){inta=2,b=10;cout我使用g++test.cpp-std=c++11-otest编译它。但是输出是这样的:BeforeSwappingusing{}a:2b:10AfterSwappingusing{}a:10b:10BeforeSwappingusingmak

c++ - 尝试使用 {} 和 std::make_pair() 交换两个变量时的不同行为

我试图按照以下代码使用std::tie()交换两个变量(我知道std::swap,我只是在尝试这是出于好奇):#include#includeusingstd::cin;usingstd::tie;usingstd::cout;usingstd::endl;usingstd::make_pair;intmain(){inta=2,b=10;cout我使用g++test.cpp-std=c++11-otest编译它。但是输出是这样的:BeforeSwappingusing{}a:2b:10AfterSwappingusing{}a:10b:10BeforeSwappingusingmak

c++ - _Exit 在 C++ 程序中的行为如何?

C99提供了_Exit函数,它“立即”退出,尽管它确实可能会关闭文件描述符。Unix/POSIX通过强制关闭所有fd而不刷新(并提供同义词_exit)来扩展此行为。当从C++程序调用时,这些函数会调用static对象的析构函数吗?C++标准是否对_Exit做出任何保证?(受thisquestion启发;我突然想知道C++中典型的fork-exec-_exit习语会发生什么。) 最佳答案 首先,任何形式的程序退出都不会自动调用堆对象的析构函数(在ISO/IEC14882:1998(E)12.4.10中暗示)。调用exit()不会为具有

c++ - _Exit 在 C++ 程序中的行为如何?

C99提供了_Exit函数,它“立即”退出,尽管它确实可能会关闭文件描述符。Unix/POSIX通过强制关闭所有fd而不刷新(并提供同义词_exit)来扩展此行为。当从C++程序调用时,这些函数会调用static对象的析构函数吗?C++标准是否对_Exit做出任何保证?(受thisquestion启发;我突然想知道C++中典型的fork-exec-_exit习语会发生什么。) 最佳答案 首先,任何形式的程序退出都不会自动调用堆对象的析构函数(在ISO/IEC14882:1998(E)12.4.10中暗示)。调用exit()不会为具有

c++ - Visual Studio 2010 中 unique_pointer 的奇怪行为

我试着写这门课#includeclassContainerUnique{public:ContainerUnique(void);~ContainerUnique(void);private:std::unique_ptru;};其中UniqueElement是在别​​处定义的POD类。我现在这样定义构造函数体:ContainerUnique::ContainerUnique(void){autotmp=newUniqueElement(1);this->u(tmp);//uisaunique_ptr.Shouldthiscallcompile?}而且它毫无异常(exception)地

c++ - Visual Studio 2010 中 unique_pointer 的奇怪行为

我试着写这门课#includeclassContainerUnique{public:ContainerUnique(void);~ContainerUnique(void);private:std::unique_ptru;};其中UniqueElement是在别​​处定义的POD类。我现在这样定义构造函数体:ContainerUnique::ContainerUnique(void){autotmp=newUniqueElement(1);this->u(tmp);//uisaunique_ptr.Shouldthiscallcompile?}而且它毫无异常(exception)地

c++ - std::vector 和 std::min 行为

为什么下面的程序没有返回最小值为1。#include#include#includeintmain(intargc,char**argv){std::vectortest;test.push_back(INT_MAX);test.push_back(1);intmin=*(std::min(test.begin(),test.end()));std::cout它返回minimum值作为2147483647 最佳答案 你可以试试这个:intmin=*std::min_element(test.begin(),test.end());s

c++ - std::vector 和 std::min 行为

为什么下面的程序没有返回最小值为1。#include#include#includeintmain(intargc,char**argv){std::vectortest;test.push_back(INT_MAX);test.push_back(1);intmin=*(std::min(test.begin(),test.end()));std::cout它返回minimum值作为2147483647 最佳答案 你可以试试这个:intmin=*std::min_element(test.begin(),test.end());s

c++ - const_cast 未定义行为的重要示例

据我了解,以下代码是根据c++标准(特别是第7.1.5.1.4[dcl.type.cv]/4节)未定义的行为。#includestructF;F*g;structF{F():val(5){g=this;}intval;};constFf;intmain(){g->val=8;std::cout但是,我尝试过的每个编译器和优化设置都会打印“8”。问题:这种类型的“隐式const_cast”是否有会出现意外结果的示例?我希望有一些像结果一样壮观的东西#includeintmain(){for(inti=0;i开启,例如,带有-O2的gcc4.8.5EDIT:标准中的相关部分7.1.5.1.

c++ - const_cast 未定义行为的重要示例

据我了解,以下代码是根据c++标准(特别是第7.1.5.1.4[dcl.type.cv]/4节)未定义的行为。#includestructF;F*g;structF{F():val(5){g=this;}intval;};constFf;intmain(){g->val=8;std::cout但是,我尝试过的每个编译器和优化设置都会打印“8”。问题:这种类型的“隐式const_cast”是否有会出现意外结果的示例?我希望有一些像结果一样壮观的东西#includeintmain(){for(inti=0;i开启,例如,带有-O2的gcc4.8.5EDIT:标准中的相关部分7.1.5.1.