c++基础语法命令(C程序员刷leetcode)


平时编码都用C,但是C刷算法效率太低,记录一些过程常用的c++基础语法;

输入输出cout cin

cout << "hello word";
cout << "enter two num for x y" << endl; // endl换行
cin >> x >> y;
cout << "x + y -> " << x + y << endl;

基础类型及操作

基本数据结构提示

char *p = new char[10]; // 分配一个内存给指针
delete [] p; // 回收内存

容器vector(类似数组)

定义 vector <类型> 变量名
vector <int> v1; // int类型构造器,默认为空
vector <int> v2(v1); // v1的副本
vector <int> v3(n, i); // 有n个元素,值为i
vector <int> v4(n); // 有n个元素,默认初值;
vector<vector<int>> dp(m, vector<int>(n)); // 初始化一个二位数组大小[m][n]
访问方式 用a[i]下标访问 用迭代器iterator访问
vector<int>obj(10, 1);
for(int i = 0; i < 10; i++) {
    cout<<obj[i]<<" ";
}
vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素 
for(it=obj.begin();it!=obj.end();it++) { // begin表示第一个元素
    cout<<*it<<" ";
}
常用操作 size成员个数、empty判空、push_back新增元素、pop_back去掉元素、clear 清空
vector<int>obj(10, 1);//创建一个向量存储容器 int, 初始里面有10个1
obj.push_back(5); // 新增一个成员,值为5
int size = obj.size(); // 取元素个数
obj.pop_back(); // 去掉一个元素
obj.clear(); // 清空obj

字符串string

定义 string
string s1; // 初始化一个空串
string s2(s1); // s2为s1副本
string s3("hello world"); // 初始化子串
string s4(n, 'c'); // 初始化n个字符c的副本
string s5 = "hello world"; // 创建后拷贝初始化
string s6 = string(s5,0,5);  // "hello" 第0个字符开始,拷贝5个字符
常用操作 empty判空、length\size长度、insert插入、substr子串、replace替换、append追加
string s="ABAB";
cout << str.length() << str.size();
cout << s.substr(2) <<endl ; //输出AB
cout << s.substr(0,2) <<endl ; //同上
cout << s.substr(1,2) <<endl ; //输出BA

string s1("Limitless"), s2("00");
s1.insert(2, "123");  //在下标 2 处插入字符串"123",s1 = "Li123mitless"
s1.insert(3, s2);  //在下标 2 处插入 s2 , s1 = "Li10023mitless"
s1.insert(3, 5, 'X');  //在下标 3 处插入 5 个 'X',s1 = "Li1XXXXX0023mitless"

string s1("Real Steel");
s1.replace(1, 3, "123456", 2, 4);  //用 "123456" 的子串(2,4) 替换 s1 的子串(1,3) 输出 R3456 Steel
string s2("Harry Potter");
s2.replace(2, 3, 5, '0');  //用 5 个 '0' 替换子串(2,3) 输出 HaOOOOO Potter
int n = s2.find("OOOOO");  //查找子串 "00000" 的位置,n=2
s2.replace(n, 5, "XXX");  //将子串(n,5)替换为"XXX" 输出 HaXXX Potter

string s1("123"), s2("abc");
s1.append(s2);  // s1 = "123abc"
s1.append(s2, 1, 2);  // s1 = "123abcbc"
s1.append(3, 'K');  // s1 = "123abcbcKKK"
s1.append("ABCDE", 2, 3);  // s1 = "123abcbcKKKCDE",添加 "ABCDE" 的子串(2, 3)

关联容器map(一对一hash表格)

定义map数据—自动建立key(要求唯一)-value的对应
map<int, string> mapStudent; // 定义一个map对象
常用操作— insert插入、erase删除、find查找、size元素个数、empty判空、clear清空
mapStudent[3] = "student_tree"; // 直接访问的方式插入
mapStudent.insert(pair<int, string>(0, "student_zero")); // 第一种 用insert函數插入pair<int, string>类型
mapStudent.insert(make_pair<int, string>(2,"student_two")); // 通过make_pair构造
mapStudent.insert(map<int, string>::value_type(1, "student_one"));
// 取值方式
map<int, string>::iterator iter = mapStudent.find(2); // 可以用 iter->second 来使用第二个值 
string str = mapStudent[2]; // 不推荐,如果key不存在,会中增加这个key,而value就是缺省值
if (mapStudent.find(2) == mapStudent.end()) { // 找不到
	cout << "not find!" << endl;
}

常用数据结构

链表定义
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
 };
栈stack—empty判空、push入栈、pop弹出、top取顶、size元素个数
stack<int> s; // 定义栈
s.push(10); // 入栈
while(!s.empty()) { // 判空 
    s.pop(); // 出栈
}
int top = s.top(); // 取顶部
int size = s.size(); // 取元素个数
队列queue—empty判空、size元素个数、push入队、pop出队、front队首、back队尾
queue<int> q; //定义队列
for (int i = 0; i < 10; i++){
	q.push(i);
}
cout << "q中有" << q.size() << "个元素" << endl;
cout << "队头元素为:" << q.front() << endl;
cout << "队尾元素为:" << q.back() << endl;
if (!q.empty()){ // 判空
	q.pop(); // 删除队列首元素
}
return 0;
优先队列priority_queue(大/小 顶堆)—操作方式和队列类似
priority_queue<int> a; // 默认大顶堆,相当于 priority_queue <int,vector<int>,aless<int> >a 降序队列
priority_queue <int,vector<int>,greater<int> > c; // 升序队列,小顶堆
for (int i = 0; i < 5; i++) {
    a.push(i);
    c.push(i);
}
while (!a.empty()) {
    cout << a.top() << ' '; // 输出 4 3 2 1 0
    a.pop();
} 
while (!c.empty()) {
    cout << c.top() << ' '; // 输出 0 1 2 3 4
    c.pop();
}

常用通用函数

比较大小 max(a, b) / min(a, b)
排序sort(左闭右开)、配合begin()、end()
vector<int>obj;
obj.push_back(1);
obj.push_back(3);
obj.push_back(0);
sort(obj.begin(),obj.end()); // 从小到大排序, 注意begin是第一个元素(包含),end是最后元素下一个位置(不包含);

bool cmp(int a,int b) { 
    return a > b;
} 
sort(obj.begin(),obj.end()),cmp); // 从大到小
// 也可以模板
sort(obj.begin(),obj.end(),less<int>()); // 升序
sort(obj.begin(),obj.end(),greater<int>()). // 降序
反序reverse(用法和sort类似)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 首先,需要在VSCode中安装C++插件,可以在扩展商店中搜索"C++",然后安装Microsoft官方提供的"C++"插件。 2. 接着,需要在本地安装C++编译器,比如gcc或者clang。可以在终端中输入"g++ --version"或者"clang++ --version"来检查是否已经安装。 3. 在VSCode中打开leetcode题目的文件夹,可以使用"Open Folder"命令,或者直接在终端中进入该文件夹。 4. 在VSCode中打开终端,可以使用"Terminal"菜单或者快捷键"Ctrl + ` "。 5. 在终端中输入命令"touch main.cpp",创建一个名为"main.cpp"的文件。 6. 在VSCode中打开"main.cpp"文件,开始编写代码。 7. 编写完代码后,在终端中输入命令"g++ main.cpp -o main",将代码编译成可执行文件。 8. 在终端中输入命令"./main",运行可执行文件,查看代码是否正确。 9. 如果代码正确,可以将代码提交到leetcode网站进行测试。 ### 回答2: VSCode 是一种非常流行的开源代码编辑器,可以用于编写各种计算机编程语言。LeetCode 是一种学习和练习算法的平台,它提供了许多编程问题和测试数据,使得程序员可以通过解决这些问题来提高编程能力。 为了在 VSCode 上 LeetCode,首先我们需要安装 C 语言的编译器和调试器。常见的 C 语言编译器有 gcc 和 clang,它们可以在大多数操作系统上运行,例如 Windows、Mac、Linux 等。同时,为了方便调试,我们可以安装 VSCode 的插件,例如 C/C++、Code Runner 等。 安装好编译器和插件后,我们需要在 VSCode 中创建一个新的 C 语言项目,例如可以在终端中使用命令 `mkdir my_leetcode` 创建一个新的目录,然后在 VSCode 中打开这个目录。接着,在 VSCode 的编辑器中创建一个新的 C 文件,例如 `main.c`,并且在这个文件中编写自己的 LeetCode 解法代码。要注意,我们需要包含正确的头文件,并且使用 main 函数来调用我们编写的算法。 编写完代码后,我们可以使用插件中的 Code Runner 来运行这个程序。在编辑器中按下快捷键 Ctrl+Alt+N,或者通过右键菜单选择 Run Code,就可以编译并运行我们的代码。同时,Code Runner 还可以在终端中显示程序的输出结果,方便调试和查看。 除了 Code Runner,我们还可以使用 VSCode 中内置的调试器来单步运行代码,查看变量的值和程序的执行流程。要使用调试器,我们需要在代码中打断点,然后点击 VSCode 的调试按钮来启动调试器。一旦程序到达断点,就可以逐步进行调试并查看变量的值,从而检查算法的正确性和性能。 总之,使用 VSCode LeetCode 能够较为方便地进行代码编写、调试和运行。我们只需要安装好对应的编译器和插件,然后按照标准的 C 语言写法来编写算法即可。通过不断地练习和掌握,我们能够更好地提高自己的编程水平和算法思维能力。 ### 回答3: VSCode是一种轻量级的代码编辑器,可以为编写代码提供丰富的功能和工具。它具有强大的语法高亮功能,可以轻松地切换不同的语言模式。对于leetcode来说,VSCode可以作为一个开发环境使用,主要有以下几个步骤: 第一步,安装和配置C/C++插件。在VSCode中,您需要安装一个C/C++插件,它可以用来编写和调试C/C++代码。安装该插件后,您需要根据自己的需求进行配置模板,以便更好地适应您的编程风格。 第二步,安装leetcode插件。为了方便,您可以通过在VSCode中安装leetcode插件,轻松访问leetcode网站并题。该插件提供了很多实用功能,包括搜索和筛选题目,提交代码并获得反馈等。 第三步,编写代码。通过安装C/C++插件,您可以在VSCode中轻松编写C/C++代码。在leetcode时,您可以使用VSCode的一些功能,例如代码折叠、语法高亮、代码补全等。 第四步,调试代码。VSCode中的C/C++插件还提供了一个非常强大的调试工具,可以帮助您调试C/C++代码。您可以在断点处暂停代码执行,查看变量值和堆栈信息等。这将大大简化调试过程。 总之,VSCode作为一个轻量级代码编辑器,具有强大的功能和工具,可以帮助您更轻松地leetcode。安装C/C++leetcode插件以及适当的配置,可以大大提高您的编程效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值