C++STL
发狂的蜗牛
教育行业
展开
-
c++错误之map的find()返回值类型
QueryResult TextQuery::query(const string &s)const{//不能用下标操作查询单词s是否存在,因为下标操作在单词不存在的//情况下会往map中添加单词,正确的做法用findauto ret = wm.find(s); //find返回的是迭代器if(ret == wm.end()) { //这里必须新建一个set<line_no>对象,内容为空,不然 //对此时返回的QueryResult对象中的有关wm对象的一切操作均会.原创 2022-01-28 14:51:49 · 7292 阅读 · 2 评论 -
c++关联容器的容器操作(和顺序容器都支持的操作)详细解释,基础于c++primer 5th 表 9.2 (持续更新)
#include <iostream>#include <string>#include <map>#include <set>#include <iterator>#include <fstream>using namespace std;int main(){string f = "file";ifstream in(f);map<string,unsigned> words_count;...原创 2021-01-21 17:02:42 · 182 阅读 · 0 评论 -
c++ 特定容器算法(sort,merge,reverse,remove,unique)
下面内容都是特定容器算法,也就是c++,list和forward_list特有的算法。第一部分:成员函数算法merge(forward_list和list专用)1.c++ primer 5th p369页上说,lst.merge(lst2) 必须lst 和lst2都是有序的,但是我自己编写程序,lst和lst2都没有顺序也是可以的,why?#include <iostream>#include <string>#include <sstream>#原创 2021-01-13 22:41:16 · 363 阅读 · 0 评论 -
C++ remove、remove_copy、remove_if和remove_copy_if函数使用详解
如果不知道具体的场景,即元素保存在什么样的容器中,是不能从序列中移除元素的。因此,“移除元素的”算法也无法做到这一点,它们只会重写被选择的元素或者忽略复制的元素。移除操作不会改变被“移除”元素的序列的元素个数。有 4 种移除算法:remove() 可以从它的前两个正向迭代器参数指定的序列中移除和第三个参数相等的对象。基本上每个元素都是通过用它后面的元素覆盖它来实现移除的。它会返回一个指向新的最后一个元素之后的位置的迭代器。 remove_copy() 可以将前两个正向迭代器参数指定的序列中的元素复制转载 2021-01-10 22:13:36 · 1572 阅读 · 0 评论 -
迭代器和反向迭代器,常量迭代器和非常量迭代器
迭代器的类型共有4种:<T>::Iiterator,<T>::const_iterator,<T>::reverse_iterator,<T>::const_reverse_iterator#include <iostream>#include <string>#include <algorithm>#include <iterator>using namespace std;int main(.原创 2021-01-02 21:33:01 · 1221 阅读 · 0 评论 -
c++迭代器的一个例子
#include <iostream>#include <string>#include <algorithm>#include <iterator>using namespace std;int main(){//这里定义一个string对象string line = "you,are,welcome";//注意:这里定义的迭代器类型一定要和line.cbegin()匹配//接受line.cbegin()和line.cend()的...原创 2021-01-02 20:36:55 · 157 阅读 · 0 评论 -
反向迭代器的一个例子
#include <iostream>#include <string>#include <sstream>#include <fstream>#include <forward_list>#include <stack>#include <vector>#include <forward_list>#include <deque>#include <array>#..原创 2021-01-02 19:50:29 · 149 阅读 · 0 评论 -
c++ primer 5 th p328 9.5.5节 练习9.51 自己编写的答案
#include <iostream>#include <string>#include <vector>using namespace std;unsigned long find_year_of_type1(const string &);int which_type(const string &);class DATE{public: static vector<string> all_month; stati.原创 2020-08-28 22:20:24 · 318 阅读 · 0 评论 -
Linux下find命令详解
find命令格式:find path -option 【 -print 】 【 -exec -ok |xargs |grep 】 【 command {} \; 】find命令的参数:1)path:要查找的目录路径。 ~ 表示$HOME目录 .表示当前目录 / 表示根目录2)print:表示将结果输出到标准输出。3)exec:对匹配的文件执行该参数所给出的shell命令。 形式为command...原创 2020-08-27 22:25:59 · 372 阅读 · 0 评论 -
C++ stringstream 实现字符与数字之间的转换
C++ stringstream 实现字符与数字之间的转换Ginkgo关注0.4082018.02.19 23:02:04字数 30阅读 1,904字符串转数字#include<iostream> #include <sstream> #include <string>using namespace std; int main(){ //字符转数字 string str1 = "2018219"; string原创 2020-08-26 12:18:31 · 555 阅读 · 0 评论 -
C++ string与数值的转换
一、基于C++11标准 头文件:#include <string> 函数: 1.1 数值转string to_string(val):可以将其他类型转换为string。 1.2 string转数值 stoi(s, p, b):string转int stol(s, p, b):string转long stod(s, p, b):string转double stof(s, p, b):string转float stold(s, p, b):原创 2020-08-26 12:17:07 · 1738 阅读 · 0 评论 -
C++字符串和数字转换完全攻略
以字符串形式存储的数字和以数字形式存储的数字之间是有区别的。例如,字符串 "2679" 就不是一个数字:它是由 2、6、7、9 这 4 个字符的 ASCII 码组成的序列。由于字符串 "2679" 不是一个数字,所以编译器将不允许对它进行加法、乘法和除法之类的数学运算。以数字表示的字符串必须首先转换为数字形式,然后才能与算术运算符一起使用。同样地,数字形式的程序值,例如 int、long 和 double 等,有时也需要转换为字符串形式,这样结果字符串才能立即输出到文件或其他输入输出设备,或者存入内存中原创 2020-08-26 12:15:42 · 480 阅读 · 0 评论 -
C++字符串类型和数字之间的转换
C++字符串类型和数字之间的转换转载:http://www.cnblogs.com/luxiaoxun/archive/2012/08/03/2621803.html1、字符串数字之间的转换字符串---字符数组(1)string --> char * string str("OK"); char * p = str.c_str();字符数组---字符串(2)char * -->string char *p = "OK"; string str(p)...转载 2020-08-26 12:08:59 · 391 阅读 · 0 评论 -
ASCII码表详解
ASCII码大致可以分作三部分组成。第一部分是:ASCII非打印控制字符第二部分是:ASCII打印字符;第三部分是:扩展ASCII打印字符第一部分:ASCII非打印控制字符表ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详ASCII码表中0-31)第二部分:ASCII打印字符数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。数字127代表 DELETE 命令。(参原创 2020-08-26 11:26:38 · 3101 阅读 · 0 评论 -
关于c++ string搜索函数find_first_of和find_last_of的一个例子
#include <iostream>#include <string>#include <vector>using namespace std;int main(){ string numbers("0123456789"),name("r3d2"); string::size_type pos; pos = name.find_last_not_of(numbers,3); cout << pos << endl;.原创 2020-08-24 21:27:53 · 332 阅读 · 0 评论 -
2020-08-15
#include <iostream>#include <string>#include <vector>using namespace std;void find_no_asc_desc(const string & s){int number = 1; string no_asc_desc("acemnorsuvwxz"); int max = 0; string::size_type position = 0; int curr = ...原创 2020-08-15 21:46:22 · 122 阅读 · 0 评论 -
c++ 错误: reference to local variable ‘...’ returned
当返回函数的零时量的引用的时候就会出现这种情况。3.cc: In function ‘const string& add_(const string&, const string&, const string&)’:3.cc:6:12: warning: reference to local variable ‘s’ returned [-Wreturn-local-addr] string s = s1;例如:#include <iostream...原创 2020-08-12 21:22:27 · 4692 阅读 · 0 评论 -
向顺序容器vector、string、deque、list、forward_list中插入\删除元素时迭代器、引用、指针的变化
1、插入元素(1)对于vector、string来说,当在某个位置插入元素后,如果内存空间重新分配,则指向任何位置的迭代器、指针、引用都会失效;如果内存空间没有重新分配,则在插入位置之前的迭代器、指针、引用仍有效,插入位置之后的迭代器、指针、引用都失效;注意:插入元素后,尾后跌代器都会失效.(2)对于deque来说,在除了首尾位置之外任何位置插入元素跌代器、指针、引用都会失效;但是在首尾位置插入元素时,跌代器会失效,指针、引用仍有效;(3)对于list、forwa...原创 2020-08-05 17:43:05 · 360 阅读 · 0 评论 -
数组赋值给vector和list,顺便说明int和size_t的区别
如果a是数组,那么a.size() 返回的类型是size_t类型。数组赋值给vector或者list,可以采用地址。#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array&g原创 2020-08-05 16:18:46 · 484 阅读 · 0 评论 -
c++ Segmentation fault (core dumped) 的一个实例
#include <iostream>#include <string>#include <vector>#include <string>#include <iostream>using namespace std;#define LENGTH 10typedef int TYPE;typedef vector<TYPE> VECTORTYPE;void print(VECTORTYPE & );.原创 2020-08-04 10:49:26 · 601 阅读 · 0 评论 -
c++ primer第五版 317页练习2
#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;#define LENGTH 10typedef int TYPE;.原创 2020-08-01 22:08:33 · 137 阅读 · 0 评论 -
c++ 顺序容器list的一个例子
程序功能:删除一个list容器内的偶数元素,且复制奇数元素。#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;#defi.原创 2020-08-01 16:58:38 · 295 阅读 · 0 评论 -
vector插入新值后尾后迭代器失效
#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;#define LENGTH 10typedef int T...原创 2020-08-01 16:16:36 · 393 阅读 · 0 评论 -
c++primer第五版,p134页第2题自编程序
先看原题:#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;void print(forward_list<s.原创 2020-07-30 22:08:11 · 133 阅读 · 0 评论 -
forward_list的insert操作
forward_list的insert函数有以下几个(fobj是有一个forward_list的容器):fobj.insert_after(p,t) //p是个迭代器,指示插入的位置,这个函数是在p后插入元素tfobj.emplace_after(p,t);//p是个迭代器,指示构造元素的位置,这个函数是在p后面构造对象tfobj.insert_after(p,b,e);//在p之后,插入【b,e)的元素,注意左开右闭区间。返回最后一个插入元素的迭代器fobj.insert_after.原创 2020-07-30 20:24:54 · 359 阅读 · 0 评论 -
mysql中查询触发器的语句
mysql> select * from information_schema.triggers where trigger_name = trigger_6;为何老是报告错误,原因在于trigger_6是一个“值”,所以必须要加上引号。原创 2020-07-23 18:02:52 · 1658 阅读 · 0 评论 -
获取顺序容器vector,deque,string和array的首尾元素的方法有四个
获取顺序容器vector,deque,string和array的首尾元素的方法有四个:(1)迭代器(2)下标(3)front() 和 back()成员函数(4)at()成员函数如下所示,得到首尾元素都有4个方法。#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forw.原创 2020-07-23 17:14:13 · 674 阅读 · 0 评论 -
c++ 顺序容器获得首、位元素的不同方法(c++primer p309 9.3.2节页第一个程序)
#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;#define LENGTH 10typedef int TYPE.原创 2020-07-23 16:52:30 · 239 阅读 · 0 评论 -
顺序容器的访问:访问成员函数的返回是引用(和普通数组一样,普通数组的下标返回值也是数组)
所有的总结都在例子里面#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;#define LENGTH 10type原创 2020-07-23 15:56:56 · 183 阅读 · 7 评论 -
容器的访问元素的成员函数(front,back,下标和at)返回的都是引用
容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果我们用auto变量去改变保存这些函数的返回值,并且希望通过使用此变量来改变元素的值,那么必须记得将变量定义为引用#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#includ.原创 2020-07-23 15:40:55 · 452 阅读 · 0 评论 -
容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用
顺序容器的访问元素的成员函数(front,back,下标和at)返回的都是引用,如果顺序容器是const的对象,那么返回的是const的引用,下面有个例子说明问题:#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>原创 2020-07-23 15:30:29 · 230 阅读 · 0 评论 -
c++primer 第五版 p205 22题详细解释
问题:遍历vector对象的前一半元素,如果等于some_val,那么在这个元素之前插入它本身的2倍,如果这个元素不等于some_val,那么不做插入操作。#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>..原创 2020-07-22 20:53:48 · 187 阅读 · 0 评论 -
c++类的转换构造函数(一个参数的)允许从构造函数参数类型到类的“一步”隐式(implicit)转换,emplace却允许两步去构造
#include <iostream>#include <string>#include <list>using namespace std;class Sales_data{public: Sales_data() = default; Sales_data(istream & is){ double price; is >> (*this).isbn >> (this->count) &g...原创 2020-07-21 17:54:42 · 270 阅读 · 0 评论 -
emplace的一个简单例子
#include <iostream>#include <string>#include <list>using namespace std;class Sales_data{public: Sales_data() = default; Sales_data(istream & is){} Sales_data(const string &s,int cnt,double p):isbn(s),count(cnt),revenue.原创 2020-07-20 18:13:51 · 184 阅读 · 0 评论 -
(背)顺序容器的操作-向容器中插入元素详细总结
现在总结如下表:yes表示支持,no表示不支持原创 2020-07-19 18:26:15 · 318 阅读 · 0 评论 -
C++STL中swap函数操作与内存地址改变的简析
写在前面这篇文章主要讨论了STL中swap函数在交换2个容器的内容的时候是交换内存还是交换元素的问题。由于博主对C++的学习并不好,如果有什么错误恳请大家提出。下面会有一些代码展示一下swap函数在对容器进行交换的时候对内存地址的影响,感兴趣的同学也可以自己写一下代码,会更加直观理解swap函数。先放结论swap函数会交换2个数据类型相同的容器内容。本身交换的速度非常快,因为swap在交换的时候并不是完全将2个容器的元素互换,而是交换了2个容器内的内存地址。除了数组,其他容器在交换后本质上是将内存地转载 2020-07-18 16:02:32 · 1112 阅读 · 1 评论 -
顺序容器赋值运算
#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;#define LENGTH 10typedef int TYPE;.原创 2020-07-16 21:56:06 · 197 阅读 · 0 评论 -
c++vector初始化的几种方法
#include <iostream>#include <string>#include <vector>#include <deque>#include <list>#include <forward_list>#include <string>#include <array>using namespace std;#define LENGTH 10typedef int TYPE;.原创 2020-07-08 17:51:12 · 3831 阅读 · 0 评论 -
c++容器定义、初始化、赋值
令C表示六个顺序容器类型期中之一(vector,deque,list,forward,string,array),以下详细说明定义和初始化以及赋值.1.容器定义和初始化(1)C c;默认构造函数,如果c是一个array,则c中元素按照默认初始化;否则c为空。解释:默认初始化,如果c是全局变量,int 初始化为0,如果c是局部变量。那么初始化为任意整数值。string 对象全部初始化为空串子.(2)C c1(c2) ; c1初始化为c2的类型。c1 和c2必须是...原创 2020-07-08 11:28:43 · 5507 阅读 · 0 评论