在我对幸福的无尽追求中,我遇到了这样的事情
auto temp = new int;
delete[0] temp;
Run Code Online (Sandbox Code Playgroud)
而在我的脑海里,我就像...... "这不可能是正确的!" 所以我启动了最特殊和反叛的雪花编译器来测试它,并且看,它编译并运行没有任何问题!
然后我在GCC(4.8.1)中尝试了它并且它因此错误而拒绝了它
错误:在数字常量之前预期']'
所以我问你的同志们哪一个是对的?(肯定不是MSVC(11)?!)如果你能引用那个很棒的标准.
我有一个map<K, V>,我想unique_copy用来将值放入vector<V>.我试过这个,但它不起作用:
#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
#include <functional>
using namespace std;
using namespace placeholders;
int main() {
map<std::string, int> mp;
mp["1"] = 1;
mp["2"] = 2;
mp["3"] = 3;
mp["4"] = 3;
mp["5"] = 3;
mp["6"] = 4;
mp["7"] = 2;
vector<int> vec;
unique_copy( mp.begin(), mp.end(),
back_inserter(vec),
bind(&map<std::string, int>::value_type::second, _1) );
for( auto& i : vec )
cout<< i <<" ";
}
Run Code Online (Sandbox Code Playgroud)
预期产量:1 2 3 4 2
所有谷歌搜索都返回使用方式,transform但我需要 …
编译器如何生成单独文件的二进制代码?对GCC源代码中的哪些文件的引用会对此有所帮助.我想知道的是编译器(特别是gcc)究竟是如何从ASM生成机器代码的?
由于我无法正确设计课程,我达到了需要这样的地步:
struct A
{
A( function< void(string&) cb > ): callback(cb) {}
function< void(string&) > callback;
template <std::size_t T>
void func( string& str) { ... }
}
int main(){
vector<A> items = {
A( bind( &A::func<1>, items[0], _1) ),
A( bind( &A::func<2>, items[1], _1) ),
...
}
Run Code Online (Sandbox Code Playgroud)
这样安全吗?如果没有,有替代方案吗?
在我无休止的旅程中,围绕着这个美丽的东西的巨大而危险的飞机,The Internet我也遇到了一个神秘的,老白胡子的巫师,他的名字不会被提及.尽管死得很厉害,很快就把他带走了.
在他最后一次呼吸之前的那一刻,他向我传了一个卷轴,然后晕倒了
Take this and spread the knowledge
在他去世后很快,他的身体转化为能量,纯净的能量在宇宙中传播.
滚动包含这段代码:
#include <iostream>
int main()
{
int x = 3;
while(2 <= x <= 5)
std::cout << x++;
}
Run Code Online (Sandbox Code Playgroud)
这个谜至今仍然存在:
如何评估病情?
我使用以下代码创建一个按钮并更改其过程:
INT_PTR CALLBACK Proc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
//switch( LOWORD(wParam) )
//switch( HIWORD(wParam) )
switch (message)
{
case 200:
case BN_CLICKED:
MessageBox(NULL,NULL,NULL,NULL);
break;
default: return oldproc(hDlg, message, wParam, lParam);
}
return (INT_PTR)FALSE;
}
Run Code Online (Sandbox Code Playgroud)
和
HWND handle = CreateWindowEx( NULL,
L"button",
L"TEXT",
WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_DEFPUSHBUTTON,
50,
50,
500,
500,
hWnd,
(HMENU)200,
hInstance,
nullptr);
oldproc = (WNDPROC)SetWindowLong(handle, GWL_WNDPROC, (LONG)Proc);
Run Code Online (Sandbox Code Playgroud)
问题是,无论我如何处理 Proc 中的消息,都不会创建消息框。
注意:注释最后一行并在窗口过程中处理它,如下所示:
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{ …Run Code Online (Sandbox Code Playgroud) 我知道这种问题在这里并不受欢迎,但我必须要问:为什么unique_ptr/shared_ptr/etc没有类型为T的operator =重载?
写作似乎更自然
std::unique_ptr<int> p = new int(5);
Run Code Online (Sandbox Code Playgroud)
代替
std::unique_ptr<int> p(new int(5));
Run Code Online (Sandbox Code Playgroud)
或任何其他更冗长的方法.