小编Tan*_*iao的帖子

为什么声明"cout <<'\\\\';"没有失败?

源代码如下.

cout << '\\' << endl;  //OK, output is \  
cout << '\\\\' << endl;  //OK, output is an integer 23644, but why? 
Run Code Online (Sandbox Code Playgroud)

该语句cout << '\\\\' << endl;调用类的以下函数ostream.

_Myt& __CLR_OR_THIS_CALL operator<<(int _Val)
Run Code Online (Sandbox Code Playgroud)

我知道写表达式很奇怪'\\\\',但我不明白它为什么不会失败.如何解释结果?

c++ string cout char visual-c++

14
推荐指数
1
解决办法
339
查看次数

为什么语句"vector <int>(v1);"失败

一个vector<int>(v1)表达式产生一个临时对象,并且可以在右侧放operator=,但如果我们用一个vector<int>(v1)表达式作为一个声明,它会在Visual Studio 2010 10.0.30319.1 RTMRel失败.详细错误信息位于以下代码的注释中.为什么会这样?

vector<int> v1; 
v1.push_back( 10 );
v1.push_back( 20 );
v1.push_back( 30 );    
vector<int> v3 = vector<int>(v1);  //OK, deliberately code like this.
vector<int>(v1);  //error C2086: “std::vector<_Ty> v1”: redefinition
Run Code Online (Sandbox Code Playgroud)

"C++编码标准:101规则,指南和最佳实践"一书中,第82章"使用公认的习语真正缩小容量并真正擦除元素".有一个声明:

container<_Type>(c).swap(c);
Run Code Online (Sandbox Code Playgroud)

我不明白,只想测试container<_Type>(c),这是什么意思?

c++ vector

6
推荐指数
2
解决办法
214
查看次数

“multiset&lt;int, Greater&lt;int&gt; &gt; ms1”和“multiset&lt;int&gt; ms2(greater&lt;int&gt;())”有什么区别

在我看来,它们是一样的。但在 Visual Studio 2015 中,它们绝对不同。

//Ok, work properly
multiset<int, greater<int> > ms1;
ms1.insert(10);
ms1.insert(20);

//error, why?
multiset<int> ms2(greater<int>());
ms2.insert(30);
ms2.insert(40);
Run Code Online (Sandbox Code Playgroud)

我不知道为什么?

c++ multiset

0
推荐指数
1
解决办法
1713
查看次数

标签 统计

c++ ×3

char ×1

cout ×1

multiset ×1

string ×1

vector ×1

visual-c++ ×1