C++primer学习
jasonLee_lijiaqi
这个作者很懒,什么都没留下…
展开
-
string和数值的相互转换
在进行转换的时候,可以直接使用stoi(s);而不一定需要使用参数p和b,使用简单的形式就可以满足我们的需求了;原创 2017-10-27 10:06:22 · 871 阅读 · 0 评论 -
map例子:魔法咒语问题
题目描述: 哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000种不同的魔咒,哈利很难全部记住,但是为了对抗强敌,他必须在危急时刻能够调用任何一个需要的魔咒,所以他需要你的帮助。 给你一部魔咒词典。当哈利听到一个魔咒时,你的程序必须告诉他那个魔咒的功能;当哈利需要某个功能但不知道该用什么魔咒时,你的程序要替他找到相应的魔咒。如果他要的魔咒不在词典中,就输出“原创 2017-11-22 20:10:45 · 470 阅读 · 0 评论 -
单词转换程序——使用map&文件读写操作
单词转换程序是C++primer中的题。主要使用map来存储单词转换的规则; 以及文件读写的操作,比如ifstream & ofstream & istringstream 流程: 1、生成单词转换规则,其中使用ifstream读写文件,将每一行的单词拆分开,拆分出来的单词分别存放在map的key-value对; 2、读取input文件,拆分出每一个单词,调用tranform函数,原创 2017-11-23 21:21:52 · 668 阅读 · 0 评论 -
I/O类 & 文件读写操作
fstream 和 stringstream 都是继承自类iostream输入类ifstream、istringstream都继承自istream输出类ofstream、ostringstream都继承自ostream;因此,可以在istream对象上执行的操作,也可以在ifstream和istringstream上执行。其他类也有相同的情况。fstream,文件I/O#include <fstre原创 2017-11-23 21:41:06 · 385 阅读 · 0 评论 -
如何写typedef类型别名
之前无论在阅读带有typedef的语句或者自己写一个typedef语句时,都会很麻烦。 最近有空看了一个他的详细用法,总结出了一个自己的想法:例如:、//对于一个二维数组typedef int (*int_array)[4];typedef int *int_point;int a[2][4] = { { 1,2,3,4, },{ 5,6,7,8, } };for (int_ar...原创 2018-06-21 10:58:37 · 974 阅读 · 0 评论 -
C++编译错误与运行时错误
笔试题里经常会有这样的题目,让你判断运行时错误还是编译错误。在这里将它总结一下。在调试过程中,运行时错误是最麻烦的问题。因为编译错误可以由编译器检查出来,而大多数编译器对运行时错误却无能为力。查错和纠错的工作完全由用户自己来完成。运行时错误还分为两种:1、一种是由于考虑不周或输入错误导致程序异常(Exception),比如数组越界访问,除数为零,堆栈溢出等等。2、另一种是由...原创 2018-06-22 09:51:31 · 18659 阅读 · 0 评论 -
C++使用lambda表达式(一)
lambda表达式配合容器、迭代器使用最佳。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。声明Lambda表达式Lambda表达式完整的声明格式如下: [capture list] (params list) mutable exception-&g...原创 2018-06-25 15:49:37 · 695 阅读 · 0 评论 -
C++使用lambda表达式(二)
具体使用结合lambda表达式和for_each等STL泛型算法。结合for_each废话不说,上例子vector < string > st;st.push_back("ab");st.push_back("wet");st.push_back("peterhwet");st.push_back("ttgrry");st.push_back("wer"原创 2018-06-25 16:17:19 · 225 阅读 · 0 评论 -
C++STL的泛型算法
泛型算法只是依赖于迭代器的操作,而不是依赖于容器泛型算法可以分为3大类:下面的vec和vec2代表相同类型的容器1.只读算法:只允许读取其输入范围内的元素,而不改变元素 find(vec.cbegin(), vec.cend(), k)查找算法:前两个参数表示元素范围的迭代器,第三个参数k表示要查找的元素,查找成功则返回等于第一个元素的迭代器,查找失败返回尾后指针...原创 2018-06-25 19:41:18 · 484 阅读 · 0 评论 -
gem5创建教程
比较全的教程原创 2018-06-26 09:59:31 · 480 阅读 · 0 评论 -
getline()函数总结
每次遇到getline函数都需要查询一下用法,实现是太麻烦,索性把getline总结下来,记住它,也能一劳永逸。getline函数有两个:1、全局函数#include<cstring>原型是:istream& getline(istream& is,string& str,char delim)与istream& getline(istream& is,string& str)一般在使用从键盘原创 2017-11-23 17:01:45 · 704 阅读 · 0 评论 -
刷新输出缓冲区操作flush & ends & endl
区别endl : 完成换行,并且刷新输出缓冲区 ends:向缓冲区中添加一个空字符,然后刷新缓冲区; flush : 刷新缓冲区,不输出任何额外的字符。用法和endl的相同;cout<<"hi"<<endl;cout<<"hi"<<ends;cout<<"hi"<<flush;还有另一种刷新输入缓冲区的操作fflush(stdin);//刷新输入缓冲区fflush(stdout);//刷新原创 2017-11-22 20:58:50 · 1471 阅读 · 0 评论 -
在multimap和multiset中查找元素
与map和set中查找元素不同的是,multimap和multiset查找元素要复杂的多;由于multimap和multiset中,允许元素重复,所以使用find()函数查找的时候,并不只有一个元素,并不能直接使用find();由于在multimap和multiset中,具有相同关键字的元素在容器中会相邻存储 可以使用find()+count()结合:原创 2017-11-21 20:47:29 · 2721 阅读 · 0 评论 -
表达式求值——栈实现
要点总结分成两个栈,一个操作数栈,一个运算符栈judge(c):判断读入的字符是操作数还是运算符,便于压栈precede(a,b):判断读入的运算符和运算符栈的栈顶元素的优先级大小;如果大于栈顶元素的优先级,则将它压栈;否则,就把栈顶元素弹出来,再把操作数栈中的两个操作数弹出来,与该运算符做相应的运算。Operate():上文提到的,进行相应的运算的函数实现原创 2017-10-27 11:12:23 · 1251 阅读 · 2 评论 -
关联容器和顺序容器
1:关联容器和顺序容器 c++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector、list、deque等。其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实现。deque与vector类似,但是对于首元素提供删除和插入的双向支持。关联容器主要有map和set。map是key-value形式的,set是单值。map和set只能存放唯一的ke转载 2017-10-27 20:41:56 · 1218 阅读 · 0 评论 -
迭代器iterator的一点总结
iterator在回顾使用string和vector容器的时候,用到了iterator(迭代器),这里把一些容易忽略的要点总结如下:原创 2017-10-24 11:36:28 · 1223 阅读 · 0 评论 -
总结:顺序迭代器失效的范围
向容器中添加元素或删除元素会导致指向容器元素的迭代器、指针或引用失效。一个失效的迭代器、引用、或指针不再指向任何元素。原创 2017-10-26 20:05:33 · 437 阅读 · 0 评论 -
vector中的capacity、size的区别
由于vector和string都是顺序容器,在内存中分配了一块连续的存储空间。为了保证动态添加元素的高效率,因此必须预先为vector和string分配一段空间,这个空间就是capacity。而容器中元素的个数就是size(),在容器中,capacity总是大于等于 size;当出现size > capacity的时候,如果没有空间继续容纳新的元素,不可能将它放到其他位置——因此要保证存储空间要连续原创 2017-10-26 20:59:52 · 1360 阅读 · 0 评论 -
使用map&set统计单词个数
统计输入字符串中的特定单词的个数//或者统计除特定单词之外的个数原创 2017-11-05 10:48:18 · 898 阅读 · 0 评论 -
transform函数转换大小写
C++中没有提供对string串进行直接大小写转换的函数,只能采用toupper & tolower函数对单个字符进行转换;可以使用STL中的algorithm头文件中函数实现;原创 2017-11-05 11:33:09 · 6250 阅读 · 1 评论 -
向map中添加成员操作
首先从一个例子开始: 定义一个map,关键字是家族的姓,值是一个vector,保存家中孩子们的名字。实现添加新的家族以及向已有家庭中添加新的孩子。#include <iostream>#include <set>#include<vector>#include<map>using namespace std;int main(){ map<string,vector<stri原创 2017-11-21 15:59:43 · 1856 阅读 · 0 评论 -
使用map迭代器中遇到的问题——非const转成const类型造成的编译错误
在使用迭代器的时候,遇到下面这个问题,值得注意: 非const转成const类型造成的编译错误; 这种类型的错误,在每本书上都会被提及,但是真正在使用的的时候还是会出错,所以要好好对待这些不起眼的错误。原创 2017-11-21 19:37:41 · 1154 阅读 · 0 评论 -
C++ STL替换string中的空格(其他字符)
//替换字符串中指定的字符//先find该字符,删除元素,最后插入元素void string_replace(string &st1, char c){ string::iterator tmp = find(st1.begin(), st1.end(), c); while (tmp != st1.end()) { auto x = st1....原创 2018-07-02 14:34:12 · 5030 阅读 · 0 评论