用C++刷算法题需要掌握的基本语法(更新ing)

隔很长时间刷算法,就会把C++的语法丢掉一些。写下这篇文章用于复习。

1、Xcode创建C++项目

创建项目的时候,选择macOS——Command Line Tool——C++。

2、C++基本模板

#include <iostream>
using namespace std;

int main() {
    return 0;
}

 3、字符串的输入

string str;
// 第一类:不断输入空格隔开的单词,直到回车
while(cin >> str){
	cout << str << endl;// str是不同的单词
	if(getchar() == '\n')
		break;
}
// 第二类:输入包含空格的字符串,一个字符串以回车结束输入
while(getline(cin, str)){
    cout << str << endl;// str就是一整串字符串
}

4、向量的使用

// 声明
vector<int> vec;
// 初始化
vector<int> vec(10);    // 大小为10
vector<vector<int>> vec(10);    // “行数”为10的二维向量
vector<int> vec(10, 1);    // 大小为10,且全赋值为1
vector<int> tmp(vec.begin(), vec.end());    // 拿vec的值来初始化
vector<int> tmp(n, n+5);    // 拿数组来初始化
vector<int> tmp(&n[1], &n[4]);    // 拿数组来初始化
// 插入
vec.push_back(某值);
vec.insert(vec+4, 某值); // 在vec的第5个位置插入某值
// 删除
vec.erase(vec.begin(), vec.end());
// 长度
cout << vec.size();
// 排序
sort(vec.begin(), vec.end());
// 查询
auto it = find(vec.begin(), vec.end(), 查找值);
if(it != vec.end()){
    // 找到了
}
// it迭代器转下标
int index = it - vec.end();

5、哈希表的使用

// 相当于是下标可以定义的数组,key-value
unordered_map<int, int> map;
// 初始化
unordered_map<int, int> map={{1,1},{2,2},{3,3}};
// 插入
map[key值] = value值;
// 按照key查询
auto it = map.find(key值);
// 找到了
if(it != map.end()){
    cout << it -> first;// 打印key
    cout << it -> second;// 打印value
}

6、链表的使用

// 结构体
struct Node{
    int val;
    Node* next;
    Node(): val(0), next(nullptr) {}
    Node(int x): val(x), next(nullptr) {}
    Node(int x, Node *next): val(x), next(next) {}
}

// 定义
Node *head = nullptr, *tail = nullptr;
// 插入
head->next = new Node(val值);
head = head->next;

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 学习 C 语言到一定程度后,可以去算法。具体来说,需要掌握 C 语言中的基本数据类型、运算符、流程控制语句、函数、数组和指针等基本知识。此外,如果能熟练使用常用的数据结构(如数组、链表、栈和队列等)和算法(如排序和搜索算法),就可以开始做算法了。 ### 回答2: 学习算法算法是程序员技能提升的重要部分,对于一般的学习者来说,能够算法的程度与以下几个方面有关。 首先,掌握基础的数据结构和算法算法的前提。这包括数组、链表、栈、队列、树、图等数据结构,以及常见的排序和搜索算法、动态规划、贪心算法等。如果没有掌握这些基础知识,算法会事倍功半。 其次,需要具备一定的编程能力。算法需要用编程语言实现算法的思想,因此熟练掌握编程语言的基本语法和常用的数据结构操作是必要的。同时,编程能力也体现在解过程中的思考能力和代码的实现能力上。 然后,需要有一定的算法思维和解能力。算法并不仅仅是实现算法,更重要的是理解算法背后的思想和解思路。需要培养对问的抽象分析能力,能够将问转化为基本的数学模型,并设计出高效的算法来解决问。 最后,需要坚持不懈地练习。算法是一个长期的学习过程,需要持续地投入时间和精力。通过刷题,可以不断积累经验,提升解能力,掌握更多的算法思想和技巧。 总的来说,能够去算法的程度取决于个人的基础知识、编程能力、算法思维和解能力,以及持续的学习和练习。只有不断地充实自己,不断地积累经验,才能在算法中有所收获。 ### 回答3: 学习算法是程序员成长的必经之路。c语言是一门功能强大的编程语言,掌握c语言的基本语法和数据结构后,可以开始学习和算法。一般来说,当掌握了以下几个方面的知识,就可以开始算法了。 首先是基本的语法和数据结构。掌握c语言的基本语法和常用的数据结构(如数组、链表、堆栈等)是算法的基础。只有熟练掌握了这些基础知识,才能够更好地理解和解决算法。 其次是算法的设计与分析。学习算法的重点是理解不同的算法思想和设计方法,并能将其应用到具体的问中解决。常见的算法思想包括贪心算法、动态规划、回溯算法等。熟悉这些算法思想,并能够灵活运用,是算法的关键。 最后是问解决能力。算法的过程中,会遇到各种各样的问,有时候会比较复杂或难以理解。在这个过程中,培养问解决能力是至关重要的。要能够善于分析问、寻找解决问的思路,并灵活应用已学过的算法技巧。 算法不仅要求学习和理解,更需要大量的练习。最好的学习方法是多刷题,通过实践来提升算法思维和解能力。在解的过程中,要注重思考和总结,总结解的思路和遇到的难点,这样才能够不断进步。 总之,学习和算法需要一定的时间和毅力,并且需要掌握一定的基础知识和解技巧。只有有了这些,才能够更好地应对算法,进一步提升自己的编程水平。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值