精华内容
下载资源
问答
  • 理解C++中括号{}的作用

    千次阅读 2020-07-11 20:44:03
    {} 在C++中功能较多,笼统来讲,功能起源是“变量初始化”,其用于汇总函数statements,也可以抽象理解为对函数这个变量的初始化。 功能案例 Functions void myfunction(datatype argument) { // any statement...
    • 前言

      {} 在C++中功能较多,笼统来讲,功能起源是“变量初始化”,其用于汇总函数statements,也可以抽象理解为对函数这个变量的初始化。

    • 功能案例

      • Functions
        void myfunction(datatype argument) {
          // any statement(s)
        }
        
      • Loops
        while (boolean expression) {
          // any statement(s)
        }
        
        do {
          // any statement(s)
        } while (boolean expression);
        
        for (initialisation; termination condition; incrementing expr) {
          // any statement(s)
        }
        
      • Conditional Statements
        if (boolean expression) {
          // any statement(s)
        }
        
        else if (boolean expression) {
          // any statement(s)
        }
        else {
          // any statement(s)
        }
        
      • Return {}

        return {} indicates “return an object of the function’s return type initialized with an empty”

      • Initialization

        The initialization of variables was uniformed in C++11. The rule is quite simple. {}-Initialization is always applicable.

    • References

    1. Reference > En > Language > Structure > Further syntax > Curlybraces
    2. What does “return {}” statement mean in C++11?
    3. Modernes C++ : {} - Initialization
    4. Use of Curly Brackets (Braces) Around a variable C++
    展开全文
  • C/C++中括号 {} 的作用 什么是函数 函数可以理解为 C/C++ 中一个一个的模块,可以完成一定的功能,一块一块的,有较强的独立性,可以相互调用。换句话说,一个函数里面可以调用 n 个函数,即大函数调用函数,...

    C/C++中花括号 {} 的作用

    什么是函数

    函数可以理解为 C/C++ 中一个一个的模块,可以完成一定的功能,一块一块的,有较强的独立性,可以相互调用。换句话说,一个函数里面可以调用 n 个函数,即大函数调用小函数,小函数又调用“小小”函数。这就是结构化程序设计,所以面向过程的语言又叫结构化语言。

    {}的作用

    由一个 {} 括起来的部分 就是我们提到的一块 , 单独的 { } 的内容在执行顺序上是从上至下的

    而需要理解它的重要原因是

    花括号可以看作是作用域标识符,表示某些变量的作用域,决定他们的生命周期:

    {
        int a=0;
        {
            int b=0;
            a=1;  //正确 , a的定义的一个{}中 ,即还在作用域中
        }
        b=1;    //错误,b的生命周期维持到上面的这个花括号处结束了,此时b已被销毁
    }
    

    从这里也可以清楚的理解局部变量的生命周期了,以避免这类编译问题 fatal error: use of undeclared identifier ‘xxxxxx’

    展开全文
  • C++11 大括号和小括号的使用

    千次阅读 2019-04-03 18:10:56
    //小括号初始化 string str("hello"); //等号初始化 string str="hello"; //POD对象与POD数组列表初始化 struct Studnet { char* name; int age; }; Studnet s={"dablelv",18}; //纯数据(Pla...

    C++11之前主要有以下几种初始化方式:

    //小括号初始化
    
    string str("hello");
    
     
    
    //等号初始化
    
    string str="hello";
    
     
    
    //POD对象与POD数组列表初始化
    
    struct Studnet
    
    {
    
        char* name;
    
        int age;
    
    };
    
    Studnet s={"dablelv",18}; //纯数据(Plain of Data,POD)类型对象
    
    Studnet sArr[]={{"dablelv",18},{"tommy",19}};  //POD数组
    
     
    
    //构造函数的初始化列表
    
    class Class
    
    {
    
        int x;
    
    public:
    
        Class(): x(0){} 
    
    };

    在C++11以前,程序员,或者初学者经常会感到疑惑关于怎样去初始化一个变量或者是一个对象。这么多的对象初始化方式,不仅增加了学习成本,也使得代码风格有较大出入,影响了代码的可读性和统一性。

    从C++11开始,对列表初始化(List Initialization)的功能进行了扩充,可以作用于任何类型对象的初始化,至此,列表初始化方式完成了天下大一统。

    花括号列表初始化,作为C++11新标准的一部被加入到了C++中。

    因为这个原因,c++11提出了统一初始化,以为着使用这初始化列表,下面的做法都是正确的。

    class Test
    
    {
    
        int a;
    
        int b;
    
    public:    
    
        C(int i, int j);    
    
    };    
    
    Test t{0,0};                    //C++11 only,相当于 Test t(0,0);    
    
    Test* pT=new Test{1,2};         //C++11 only,相当于 Test* pT=new Test(1,2);
    
    int* a = new int[3]{1,2,0};    //C++11 only

    此外,C++11列表初始化还可以应用于容器,终于可以摆脱 push_back() 调用了,C++11中可以直观地初始化容器: 

    //C++11 container initializer
    
    vector<string> vs={"first", "second", "third"};    
    
    map<string,string> singers ={{"Lady Gaga", "+1 (212) 555-7890"},{"Beyonce Knowles", "+1 (212) 555-0987"}};

    因此,可以将C++11提供的列表初始化作为统一的初始化方式,既降低了记忆难度,也提高的代码的统一度。

    此外,C++11中,类的数据成员在申明时可以直接赋予一个默认值:

    class C    
    
    {
    
    private:  
    
        int a=7; //C++11 only
    
    };    

    所谓花括号列表初始化,即是用花括号来初始化变量,其形式如: int  test =  { 0 } ;无论是初始化对象还是为对象赋值 , 在C++11下都可以使用这种形式的初始值。

       不同的一点 是:使用这种形式来初始化内置类型的变量时,若存在类型转换且具有丢失信息的风险时,编译器将会报错。

      通过这一点可以看出,列表初始化比原有的初始化方式具有更严格的安全要求。下面是例子:

      long double ld = 3.1415926536;

      int a {ld} , b = {ld}         // 编译器报错,存在丢失信息的风险

      int c (ld)  , d = ld ;    //正确

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • C++ 的花括号字符串格式,如 Python 和 C#。 尚不处理浮点格式说明符或隐式参数索引,但可以正确处理转义大括号"{{" 。 // char buf[32]; // sprintf(buf, "(%d, %f, %f)", vec.x, vec.y, vec.z); // spot the ...
  • 主要介绍了C++ 11新特性之大括号初始化的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面跟着编来一起学习学习吧。
  • VSCode配置 c++ 环境(小白教程)

    万次阅读 多人点赞 2020-01-28 16:26:48
    VSCode 配置 c++ 环境(小白教程)

    因为自己在VSCode配置过程中遇到许多问题,在此记录一下,希望能帮助到更多人

    若需要彻底卸载重装VSCode,可查看此篇教程

    配置c++环境

    前言


    • 本人环境:Windows10 64位
    • VSCode 使用起来还是很方便的,运行速度快,占用系统资源小,还有丰富的插件

    软件安装


    1. 下载安装MinGW-w64及环境变量配置

    MinGW:可以理解成包含多种编译环境的可自由选择安装的其中的部分的软件

    • 下载地址:https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/
      直接弹窗下载即可,下载完按照下面教程安装配置即可。
      在这里插入图片描述

    鉴于有很多人安装失败,我将 MinGW 安装文件放在了网盘,链接如下:
    链接:https://pan.baidu.com/s/1hng1o1ruDn11JlnQBq7xaw
    提取码:r823

    • 安装
      在这里插入图片描述
      安装完成后界面
      在这里插入图片描述

    • 下载相关文件(重要步骤)

      打开MinGW,勾选编译器软件

      • mingw32-gcc.bin(c语言文件编译器)
      • mingw32-gcc-g++.bin(c++语言编译器)
      • mingw32-gdb.bin(调试编译后文件)

    若在安装的时候报“找不到 xxx 库”的错误,可以重新勾选此库和dll文件

    在这里插入图片描述
    选择完后,点击 Installation > applychange,等待安装完就ok
    在这里插入图片描述

    对于 mingw32-gdb.bin 等下载失败问题,这里我把所需的三个文件放在网盘,下载后将自己没下载成功的对应文件放到 MinGW\bin 目录下即可,链接如下:
    链接:https://pan.baidu.com/s/1ZJFnR_MRkOTeufjKO4dLnw
    提取码:18rx

    • 添加环境变量
      • 右击 我的电脑 点击 属性
        在这里插入图片描述

      • 点击 高级系统设置
        在这里插入图片描述

      • 点击 环境变量
        在这里插入图片描述

      • 在系统变量中选择 Path新建
        在这里插入图片描述

      • bin地址 加入环境变量 (我的是 “D:\MinGW\bin”)
        在这里插入图片描述

      • 检测是否安装成功:命令提示符中输入 gcc -v ,若显示版本号则说明安装成功
        在这里插入图片描述

    2. 下载安装VSCode


    • 下载地址:https://code.visualstudio.com/Download
      在这里插入图片描述
      在这里插入图片描述

    配置过程

    1. VSCode插件安装


    安装完成后,打开软件

    • 下载中文插件
      在这里插入图片描述

    • 下载 c/c++ 插件
      在这里插入图片描述

      插件安装完成后 重启 VSCode

    2. 创建工作区


    • 新建一个文件夹(放 c++ 代码文件)
    • 点击文件打开建的文件夹(快捷键 Ctrl+k Ctrl+O)在这里插入图片描述

    3. 配置文件


    • 在此文件夹新建一个 .vscode 文件夹
      在这里插入图片描述

    • 在 .vscode 文件夹中新建三个文件

      • c_cpp_properties.json
      • launch.json
      • tasks.json
        在这里插入图片描述
    • 将下列代码复制到文件中

      务必根据自己的安装位置修改文件路径

      • c_cpp_properties.json

        “includePath” 路径获取方法 cmd 下输入: gcc -v -E -x c++ -
        在这里插入图片描述
        在这里插入图片描述
        修改 “includePath”"Path"
        将图示这几行代替其中路径即可

        “d:/mingw/include/**” 此条路径也根据你的路径修改加入即可

      {
          "configurations": [
              {
                  "name": "Win32",
                  "includePath": [
                      "${workspaceRoot}",
                      "d:/mingw/include/**",
                      "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include/c++",
                      "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include/c++/mingw32",
                      "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include/c++/backward",
                      "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include",
                      "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../include",
                      "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include-fixed"
                  ],
                  "defines": [
                      "_DEBUG",
                      "UNICODE",
                      "__GNUC__=6",
                      "__cdecl=__attribute__((__cdecl__))"
                  ],
                  "intelliSenseMode": "msvc-x64",
                  "browse": {
                      "limitSymbolsToIncludedHeaders": true,
                      "databaseFilename": "",
                      "path": [
                          "${workspaceRoot}",
                          "d:/mingw/include/**",
                          "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include/c++",
                          "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include/c++/mingw32",
                          "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include/c++/backward",
                          "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include",
                          "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/../../../../include",
                          "d:/mingw/bin/../lib/gcc/mingw32/8.2.0/include-fixed"
                      ]
                  }
              }
          ],
          "version": 4
      }
      
      
      • launch.json
        根据自己路径修改 "miDebuggerPath"
      {  
          "version": "0.2.0",  
          "configurations": [  
              {  
                  "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示  
                  "type": "cppdbg",       // 配置类型,这里只能为cppdbg  
                  "request": "launch",    // 请求配置类型,可以为launch(启动)或attach(附加)  
                  "program": "${workspaceFolder}/exe/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径  
                  "args": [],             // 程序调试时传递给程序的命令行参数,一般设为空即可  
                  "stopAtEntry": false,   // 设为true时程序将暂停在程序入口处,一般设置为false  
                  "cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录  
                  "environment": [],  
                  "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台  
                  "MIMode": "gdb",  
                  "miDebuggerPath": "D:/MinGW/bin/gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应  
                  "preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc  
                  "setupCommands": [  
                      {   
      		    "description": "Enable pretty-printing for gdb",  
                          "text": "-enable-pretty-printing",  
                          "ignoreFailures": true  
                      }  
                  ]  
              }  
          ]  
      }
      
      • tasks.json
        直接复制粘贴即可,无需修改

        这里我顺便把 exe 的路径改了。在 “args” 中,需要进行修改可自行百度,此处我的会将编译生成的 exe 文件单独放在一个 exe文件夹 中
      在这里插入图片描述

      {
          "version": "2.0.0",
          "command": "g++",
          "args": [
              "-g",
              "${file}",
              "-o",
              "${workspaceFolder}/exe/${fileBasenameNoExtension}.exe"
          ], // 编译命令参数
          "problemMatcher": {
              "owner": "cpp",
              "fileLocation": [
                  "relative",
                  "\\"
              ],
              "pattern": {
                  "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                  "file": 1,
                  "line": 2,
                  "column": 3,
                  "severity": 4,
                  "message": 5
              }
          }
      }
      

    这里解释一下args中自定义 exe文件存放路径:
    ${workspaceFolder}: 当前工作路径
    exe: 自己建的文件夹
    ${fileBasenameNoExtension}: 当前文件的文件名,NoExtension意思就是不带后缀名,然后加个 .exe 就是当前的exe文件,也就是编译生成的 exe 文件
    上述路径放一起意思就编译生成的 exe 文件放在exe文件夹中, 把这条配置删除的话,编译生成的exe文件就默认放在了当前工作路径下。

    顺便说一下 vscode 中一些变量代表什么意思
    ${workspaceFolder} :表示当前workspace文件夹路径,也即/home/Coding/Test
    ${workspaceRootFolderName}:表示workspace的文件夹名,也即Test
    ${file}:文件自身的绝对路径,也即/home/Coding/Test/.vscode/tasks.json
    ${relativeFile}:文件在workspace中的路径,也即.vscode/tasks.json
    ${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即tasks
    ${fileBasename}:当前文件的文件名,tasks.json
    ${fileDirname}:文件所在的文件夹路径,也即/home/Coding/Test/.vscode
    ${fileExtname}:当前文件的后缀,也即.json
    ${lineNumber}:当前文件光标所在的行号
    ${env:PATH}:系统中的环境变量

    4. 测试


    • 新建一个 cpp 文件
      在这里插入图片描述
    • F5 编译,成功
      在这里插入图片描述

    后序

    VSCode 一些好用的插件


    • Bracket Pair Colorizer —— 为不同匹配括号提供不同的颜色高亮
      在这里插入图片描述

    • Markdown All in one —— 书写 Markdown 利器
      在这里插入图片描述

    • Path Intellisence —— 路径自动补齐
      在这里插入图片描述

    • vscode-icons —— 图标插件
      在这里插入图片描述

    VSCode 修改背景图片

    • 管理员权限启动 VSCode,安装 background 插件
      在这里插入图片描述Ctrl+P 打开搜索框,输入 settings.json
      在这里插入图片描述

    • settings.json

      {
          "editor.fontSize": 20,
          "editor.mouseWheelZoom": true,
          "window.zoomLevel": 0,
          "files.autoGuessEncoding": true,
      
          // background 的相关配置
          "update.enableWindowsBackgroundUpdates": true,
          "background.customImages": [
              "file:///D:/vscode/vscode_bg/bg.png"  // 图片地址
          ],
          "background.style": {
              "content":"''",
              "pointer-events":"none",
              "position":"absolute",  // 图片位置
              "width":"100%",
              "height":"100%",
              "z-index":"99999",
              "background.repeat":"no-repeat",
              "background-size":"25%,25%",  // 图片大小
              "opacity":0.2  // 透明度
          },
          "background.useFront": true,
          "background.useDefault": false,
          "workbench.iconTheme": "vscode-icons-mac", // 是否使用默认图片
      }
      

      修改图片地址即可
      这是我的背景图片😄
      在这里插入图片描述

    VSCode 设置鼠标滚动改变字体大小

    • settings.json 中加入 “editor.mouseWheelZoom”: true 即可,上面我已经加上了,使用 Ctrl+鼠标滚轮 即可实现字体放大缩小
      在这里插入图片描述

    热心同学写的文章,大家可以参考一下:VSCode配置 c++环境(小白教程)后续问题总结:g++: fatal error: -fuse-linker-plugin, but liblto_plugin-0.dll not found

    如果本文对你有小小的帮助,请点个赞再走呗😄

    展开全文
  • } } //()括号的重载,相当灵活 person &operator()(string str, person &p) { //函数体里写什么都行,相当灵活 cout *p.m_A; return p; } }; //函数调用时的书写格式 void fun(string str, person& p) ...
  • C++operator()(重载小括号运算符)

    万次阅读 多人点赞 2019-09-24 22:32:39
    C++语言有时候需要重载运算符: (),今天我们主要介绍它主要应用的场合。 仿函数 先考虑一个简单的例子:假设有一个vector,你的任务是统计长度小于5的string的个数,如果使用count_if函数的话,你的代码可能...
  • 主要介绍了C++中用栈来判断括号字符串匹配问题的实现方法,是一个比较实用的算法技巧,包含了关于栈的基本操作,需要的朋友可以参考下
  • C++实现括号匹配

    千次阅读 2019-08-12 10:04:59
    1.问题描述 对一个字符串的左右括号进行匹配,字符串(a*(b+c)+d)在位置0和3有左括号,在...从左到右地扫描过程,将扫描到的左括号保存到栈,每当扫描到一个右括号,就将它和栈顶的左括号相匹配,并将匹配的左...
  • 利用C++实现带括号的四则运算

    千次阅读 2020-05-28 22:47:51
    利用C++实现带括号的四则运算这里写自定义目录标题 基本思路是先处理乘除法,化成一个只有加减法的式子再处理加减法 遇到括号则递归 将括号内的内容算出一个值 将这个值代替括号带入原算式 用两个stack分别保存 ...
  • C++中方括号[]的作用总结

    万次阅读 多人点赞 2017-09-25 21:12:06
    今天在编程的时候,遇到这样一条语句”delete [] p;”,回想之前使用delete基本上都是采用的”delete p;”的方式,比较好奇这两种...查找相关资料资料之后,决定进一步地把C++中最为常见的符号“[]”的作用进行总结。
  • C++ new括号问题

    千次阅读 2017-04-15 09:41:37
    括号分为两种,括号[]或小括号()。为方便说明,定义指针类型为class test, 指针为test *ptest;一、 括号的情况。括号是用来标示申请的是一个对象,还是一组对象。1 没有括号时,即ptest = new test; 这时...
  • C++】字符串括号是否匹配

    千次阅读 2017-10-30 16:58:28
    得,关于C++中栈stack的使用:stack temp; 栈常用的函数:1,temp.empty():判空,若空返回true。2,temp.top():输出栈顶元素;3,temp.pop():出栈;4,temp.push():进栈。 map:map_s.find(s[i])!=map_s....
  • c++使用栈实现括号匹配

    千次阅读 2018-09-27 17:22:51
    c++使用栈实现括号匹配 给定一个表达式e,包含各种字符,如字母数字运算符标点空格和括号()[]{}等, 判断其中括号是否匹配,如是,则返回0, 否则根据错误类型返回1-3: 错误类型包括1、2、3类型: 类型1: 左右...
  • c++重载两个中括号[][]

    2017-04-10 05:34:14
    c++重载两个中括号[][],就像二维数组一样使用 直接重在不行,得怎么弄?
  • C++编程,表达式括号匹配配对问题的实验报告
  • 1.示例 #define DI_INPUT_NUM (11) 2.为什么宏定义要加括号 强烈建议宏定义要给表达式加括号,这是一种良好的编程习惯,可以避免出错! 宏定义的本质是直接替换!...宏定义后面的表达式直接替换宏...在程序使用到了
  • c++判断括号是否匹配

    千次阅读 2020-03-01 12:30:14
    输入n组字符串,测试三种括号{}、[]、(),顺序只能是前左括号,后右括号括号间可以嵌套,若匹配输出yes,否则输出no 输入样例: 2 {a}【b】(d) {[(]} 输出样例: yes no 注意:需加头文件 #include <cstring>...
  • vs2019 开始自己的第一个C++程序

    万次阅读 多人点赞 2019-03-16 21:09:43
    还不想使用vs2019的用户可以看博主的vs2017这篇博客:vs2017安装和使用教程(详细)里面涵盖了大...这是针对于以上安装教程的C++项目新建示例,与vs2017稍有不同,旨在示范从项目搭建到程序运行的简单流程,代码就...
  • 括号匹配(C++数据结构)

    万次阅读 多人点赞 2018-08-07 14:11:10
    括号匹配(C++数据结构) 描述:给出由()、{}、[]三种类型括号所组成的字符串,判断所给字符串括号能否全部匹配,若能匹配,则输出true!,否则输出false! 输入输出示例 输入 ({}) ([{]) 输出 true! ...
  • C++指针详解-史上最全

    千次阅读 多人点赞 2019-03-11 04:30:39
    C++指针详解-史上最全pointer定义array 与 pointerpointer 初始化pointer 的计算pointer 与 conststring和pointerpointer 指向 pointervoid pointer(泛型指针)非法指针和空指针pointer 和 function 写在前面:这我...
  • c/c++里的new加括号与不加括号的区别

    千次阅读 2020-04-02 17:24:21
    在验证发现了一些特殊的地方。 全文总结(分析在下面): 调用系统的默认无参构造函数时,是可以实现创造变量时顺便进行初始化的!(请注意 —“系统默认”) 因此【new + 基本数据类型( )】 / 【new + 不包含无参...
  • code: #include&lt;iostream&gt; #include&lt;stack&gt; #include&lt;string&gt; using namespace std; int main() { string s; stack&lt;int&gt; mystack;... ...
  • 判断括号是否匹配的算法有很多,其中大多是采用栈来实现的,由于用栈实现在各种地方都能找到相应的资源,所以我决定用链表写了一个,只是玩玩。
  • C++面试题汇总 (一)

    万次阅读 多人点赞 2019-06-27 08:54:39
    C++面试题汇总 (一)一,基础题二,算法题 一,基础题 new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/...
  • C++11可以用花括号构造函数增加像vector之类的容器初始化便捷性,花括号只能向宽的方向进行转换 新版本类成员初始化的简化: 在新版本可以用{}初始化默认值为0: const引用:常量引用表示不能通过引用...
  • C++入门教程(一):第一个C++程序

    千次阅读 多人点赞 2018-03-31 18:44:45
    古银的官方网站(完整教程):http://www.xiaoguyin.com/ C++入门教程视频:https://www.bilibili.com/video/av20868986/ 目录 目录 基础示例 基础讲解 基础拓展 总结 练习 基础示例 本篇教程将要...
  • 1 有小括号时,小括号中可以有若干参数,也可以没有参数。 比如 ptest = new test(); 这样在构造时就会调用无参构造test(); ptest = new test(1); 就会调用构造函数test(int),即一个整型参数的构造函数。 2 没有小...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,481
精华内容 41,792
关键字:

c++中小括号的作用

c++ 订阅