小编Lon*_* Le的帖子

如何对std :: vector进行排序,但不使用std :: sort更改特定元素?

我有一个包含正整数和-1的向量.我的问题是我想对矢量进行排序,但不要-1 elements只使用std::sort(我知道其他方法来解决它).

例如:

输入:[-1,150,190,170,-1,-1,160,180]

输出:[-1,150,160,170,-1,-1,180,190]

这是我解决它的想法,但它没有用:

sort(myVector.begin(), myVector.end(), [&](const int& a,const int& b)->bool {
        if (a == -1 || b == -1)
            return &a < &b;
        return a < b;
    });
Run Code Online (Sandbox Code Playgroud)

我的输出是:[-1,150,170,190,-1,-1,160,180]

输出应为:[-1,150,160,170,-1,-1,180,190]

有没有想法通过使用来解决它std::sort

c++ sorting stl

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

为 C++ 标头防护实现 VSCode 片段

我尝试在 VSCode 中创建一个片段以快速包含 C++ 标头防护。例如文件路径是C:\workspace\src\chrome\browser\ui\webui\settings\about_handler.h

该代码片段预计将生成如下:

#ifndef CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_
#define CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_

#endif // CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_
Run Code Online (Sandbox Code Playgroud)

VScode 片段语法指南中,我尝试使用TM_FILEPATH变量,但找不到将文件路径转换为上面的宏的解决方案。我尝试了以下一些方法:

  • 通过转换,${TM_FILEPATH/([^a-zA-Z0-9])|([a-zA-Z0-9])/${1:+_}${2:/upcase}/g}_我可以将文件路径生成为C__WORKSPACE_SRC_CHROME_BROWSER_UI_WEBUI_SETTINGS_ABOUT_HANDLER_H_. 此正则表达式会将所有非数字和非字母字符转换为大写_,并将所有字母字符更改为大写。
  • 通过转换${TM_FILEPATH/.*src[\\\\\\/](.*)/${1:/upcase}/}我可以生成CHROME\BROWSER\UI\WEBUI\SETTINGS\ABOUT_HANDLER.H. 这个正则表达式从头到尾删除了路径src,因为我当前的工作区位于src文件夹中,所以我希望我的标头宏与该路径相关。

问题是我无法结合这两个变换来获得我想要的宏。有什么想法可以让它发挥作用吗?

regex visual-studio-code vscode-snippets

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

标签 统计

c++ ×1

regex ×1

sorting ×1

stl ×1

visual-studio-code ×1

vscode-snippets ×1