OJ 注意点及知识点总结

1.头文件

#include<vector>    //vector容器

#include<map>       //map容器

#include<algorithm>       //sort() 函数需要加

2.宏定义

#define OK 0

#defien ERR 1

或者定义成其他。

3.字符串问题

入参有字符指针,一定要检查是不是NULL

传入的Output指针,如果没有特别说明要自己分配空间的话,也要检查是否NULL

不要改变传入的字符串,需要改变的话,可以自己定义一个新的,然后memcpy过来处理

例如:

char* newstr = (char*)malloc((strlen(pInputStr)+1) * sizeof (char));        //注意 +1

memset(newstr, 0, (strlen(pInputStr)+1) * sizeof (char));                       //malloc 后一定要 memset   //最后一个参数可以从上面这句复制过来

memcpy(newstr, pInputStr, strlen(pInputStr));

传参为char* ,也可以通过string处理:

string str_c, str_e;

str_c = pStrChinese;                                       //可以这样赋值
str_e = pStrEnglish;

插一句: string有一个方法,c_str(),可以把string类型转换成 C 语言中的字符串。

若要把string类型的值赋给 char*(已分配空间),则要memecpy:

memcpy(pOutputStr, str_e.c_str(), str_e.length);

4.map

map容器就像是哈希表,就像是python中的字典,就像是javascript中的对象,都是键值对。

创建: map<int, int>  transmap;                    //定义了一个变量transmap,是个map容器,键值都是int类型

创建迭代器: map<int, int>::iterator it;              //it就是迭代器了

添加:最简单的办法就是 transmap[key] = value;

查找:transmap.find(value);                           //find函数返回的是索引值,如果没找到就返回最后的索引值的后一个,也就是transmap.end()的值

遍历:可以通过迭代器:

   for(it = transmap.begin(); it != tansmap.end(); it++){

     cout<<it->second<<" ";                //迭代器的第一值是键,第二个是值,所以 it->second 是找到的值,也可以(*it).second

   }

删除键值对:.erase(索引值)

  it = transmap.find(value);

  transmap.erase(it);

  注意遍历删除时,要在删除前将索引值+1,如:

  for(it = transmap.begin(); it != transmap.end();){

    cout<<it->fitst<<":"<<it->second<<endl;

    transmap.erase(it++);

  }

清除map容器: map.clear();

排序:map中的键值对是按照 键 从小到大排的,map不支持sort函数;

时间: 2024-10-14 20:46:00

OJ 注意点及知识点总结的相关文章

【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组

描述:  编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true:不满足时返回false. 知识点: 语言基础,字符串,循环,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归    题目来源: 内部整理  练习阶段: 初级  运行时间限制: 10Sec 内存限制: 128MByte 输入: 输入输入的数据个数 输入一个int型数组 输出: 返

【南阳OJ分类之语言入门】80题题目+AC代码汇总

声明: 题目部分皆为南阳OJ题目. 代码部分包含AC代码(可能不止一个)和最优代码,大部分都是本人写的,并且大部分为c代码和少部分c++代码and极少java代码,但基本都是c语言知识点,没有太多差别,可能代码有的写的比较丑,毕竟知识有限. 语言入门部分题基本都较为简单,是学习编程入门的很好练习,也是ACM的第一步,入门的最佳方法,望认真对待. 本文由csdn-jtahstu原创,转载请注明出处,欢迎志同道合的朋友一起交流学习.本人QQ:1373758426和csdn博客地址. now begi

洛谷OJ P1379 八数码难题 解题报告

洛谷OJ P1379 八数码难题 解题报告 by MedalPluS 题目描述   在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变.   输入格式   输入初试状态,一行九个数字,空格用0表示   输出格式 只有一行,该行只有一个数字,表示从初始状态到

【华为OJ】逆波兰

描述:  逆波兰记法中,操作符置于操作数的后面.例如表达"三加四"时,写作"3 4 +",而不是"3 + 4".如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的"3 - 4 + 5"在逆波 兰记法中写作3 4 - 5 +":先3减去4,再加上5.使用逆波兰记法的一个好处是不需要使用括号. 请编写Java函数计算逆波兰表达式的结果. 输入一个逆波兰表达式, 1.操作数类型为正的double数,符合ja

LeetCode OJ——练习笔记(1)Evaluate Reverse Polish Notation

院招终于开始了,然后期待与兴奋过后却是面临着笔试一次又一次的失败,然后开始留意到LeetCode. 也想自己去体验一下诸多大牛通向无限coding路上都攻克过的一关. 话不多说,贴出原题: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, *, /. Each operand may be an integer or another expres

算法实战-OJ之旅

算法虽然不是特别简单,但没有你想象中的那么难. Sort Array By Parity easy AC-17ms. 按照<算法导论>排序一章的一些概念,第二种可以称为是原址的(in-place). First Try: 用了另一个数组来保存结果,如果是奇数进行swap操作,同时在else中还要维护偶数的位置正确性. class Solution { public int[] sortArrayByParity(int[] A) { int[] result = new int[A.lengt

[西建大ACM协会]OJ平台如何使用

目录 [西建大ACM协会]OJ平台如何使用 0x00 前言 0x01 准备工作 0x02 注册账号 0x03 开始使用 [西建大ACM协会]OJ平台如何使用 0x00 前言 ?关于ACM比赛以及对应的练习对自己有什么好处,我不做多的解释,这次这篇文章只针对想要提升自己编程能力.但又苦于无法找到合适入门途径的新人. ?备注:本文涉及到的OJ平台需要能够访问外网才可访问. 0x01 准备工作 ?访问外网工具(防和谐,不多说,后续的操作中都需要它) ?浏览器(建议chrome,看不懂的题目就可以直接翻

H5移动端知识点总结

移动开发基本知识点 一. 使用rem作为单位html { font-size: 100px; }@media(min-width: 320px) { html { font-size: 100px; } }@media(min-width: 360px) { html { font-size: 112.5px; } }@media(min-width: 400px) { html { font-size: 125px; } }@media(min-width: 640px) { html { f

Spring知识点回顾(01)

Spring知识点回顾(01) 一.依赖注入 1.声明Bean的注解 @Component @Service @Repository @Controller 2.注入Bean的注解 @Autowired @Inject @Resource 二.加载Bean 1.xml方式 - applicationcontext.xml : Beans, Bean, Component-Scan 2.注解方式 - @Configuration,@ComponentScan,@Bean 用@Configurati