小编use*_*963的帖子

编译器正确的另一种情况

在我对幸福的无尽追求中,我遇到了这样的事情

auto temp = new int;
delete[0] temp;
Run Code Online (Sandbox Code Playgroud)

而在我的脑海里,我就像...... "这不可能是正确的!" 所以我启动了最特殊和反叛的雪花编译器来测试它,并且看,它编译并运行没有任何问题!

然后我在GCC(4.8.1)中尝试了它并且它因此错误而拒绝了它

错误:在数字常量之前预期']'

所以我问你的同志们哪一个是对的?(肯定不是MSVC(11)?!)如果你能引用那个很棒的标准.

c++ visual-c++ language-lawyer

3
推荐指数
2
解决办法
177
查看次数

unique_copy元素值从map到vector

我有一个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但我需要 …

c++ stl c++11

3
推荐指数
1
解决办法
693
查看次数

代码生成

编译器如何生成单独文件的二进制代码?对GCC源代码中的哪些文件的引用会对此有所帮助.我想知道的是编译器(特别是gcc)究竟是如何从ASM生成机器代码的?

compiler-construction code-generation

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

在未初始化的对象上使用std :: bind是否安全?

由于我无法正确设计课程,我达到了需要这样的地步:

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)

这样安全吗?如果没有,有替代方案吗?

c++ bind

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

奇怪的条件格式

在我无休止的旅程中,围绕着这个美丽的东西的巨大而危险的飞机,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)

这个谜至今仍然存在:

如何评估病情?

c++ conditional-statements

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

处理按钮点击过程中的按钮

我使用以下代码创建一个按钮并更改其过程:

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)

c++ winapi

2
推荐指数
1
解决办法
9158
查看次数

缺少unique_ptr和friends operator = overload

我知道这种问题在这里并不受欢迎,但我必须要问:为什么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)

或任何其他更冗长的方法.

c++ std c++11

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