C++初学笔记
文章平均质量分 54
BigoSprite
这个作者很懒,什么都没留下…
展开
-
类友元函数(一)
#include using namespace std;class Test{ // 友元函数可以声明在类中任何地方,但为良好的编程风格,最好声明在如下位置。 friend void Show1(Test &); friend void Show2(Test &);public: Test(int d = 0) :data(d) {} // void Fun( Test *原创 2016-01-16 15:53:55 · 786 阅读 · 0 评论 -
关联式容器map/multimap之元素大小比较(键值比较和实值比较)
关联式容器map/multimap之元素大小比较(键值比较和实值比较)写关联式容器想到三点:容器迭代器键值对原创 2016-02-28 12:37:09 · 1227 阅读 · 0 评论 -
容器的allocator(容器配置器)(一)
#include #include using namespace std;// 函数Get_allocator用于返回map/multimap的内存配置器,// 内存配置器类似指针的首地址,用于指明对象的初始存储位置,// 获取容器的内存分配器至关重要void main(){ typedef map MAP; // 定义allocator容器配置器 MAP::allocato原创 2016-02-28 14:53:27 · 593 阅读 · 0 评论 -
容器配置器(allocator)(二)
#include #include namespace ClassFoo{ void ListGetAllocatorExample1(){ std::list foo; int * p; // 用内存分配器分配包含5个元素的数组 p = foo.get_allocator().allocate(5); // 为数组中的每个元素赋值 for (int i = 0转载 2016-02-28 14:55:30 · 405 阅读 · 0 评论 -
每次读取一行字符串输入
摘要:一种读取字符串的方法,具体说:面向行而不是面向单词的方法 。istream 类(对象cin)的成员函数getline()和get();面向行的输入:getline()函数的使用方法getline()函数读取整行,通过回车键输入的换行符确定输入结尾。getline()函数有两个参数,第一个存储输入行的数组名,第二个读取的字符数(如果该参数为N,那么最多读取N-1个字符,余下空间用于存储自动原创 2016-02-28 23:02:26 · 876 阅读 · 0 评论 -
vector模板类之简单程序代码(初始化、迭代器、大小、容量以及删除等操作)
#include#include#includeusing namespace std;void main(){ vectormyvt; myvt.reserve(4);//预先设置容器的大小 myvt.push_back("1.Beijing City."); myvt.push_back("2.Tianjin City."); myvt.push_back("3.Cheng转载 2016-02-29 16:30:41 · 696 阅读 · 0 评论 -
模板类vector(容器)
1. 什么是模板类vector?vector是类,可以创建类对象,并对其初始化或赋值操作vector类似于数组,可存放int,double,string甚至是class等类型的元素,使用[]运算符访问vector元素2. vector类对象及其创建vector<int> pi;// create vector object,no initialization,vector动态分配内存// 为v原创 2016-02-29 16:39:16 · 1237 阅读 · 0 评论 -
STL移除型算法remove
下图是remove的工作原理:原创 2016-05-03 17:06:41 · 440 阅读 · 0 评论 -
C++使用STL:慎重选择删除元素的方法
原文出自:C++使用STL:慎重选择删除元素的方法 关于要删除容器中元素要选用什么样的方法(因为不同的容器所支持或删除的方法效率不同),总结如下:假设容器:Containerc;1)要删除容器中中有特定值的所有对象:如果容器是vector、string或deque,则使用erase-remove习惯用法:c.erase(remove(转载 2016-05-03 18:03:21 · 1518 阅读 · 0 评论 -
关联式容器map/multimap之初始化、删除元素、交换元素及清空操作
#include #include using namespace std;typedef pair mypair;void print(map> &m){ map>::iterator it; mypair tmp; if (m.size() < 0) cout << "Map is empty!" << endl; else { for (it = m.begi原创 2016-02-28 10:17:24 · 2822 阅读 · 0 评论 -
关联式容器map/multimap之元素个数统计、查找元素及元素的随机访问
编译结果:原创 2016-02-28 11:42:50 · 2604 阅读 · 0 评论 -
C++学习笔记
输出运算符能否重载为类成员函数? 理解:输出运算符可重载为类的友元函数,在语法上可以重载为类的普通成员函数,但在输出类对象时,这不符合人的正常思维!在class类中,private通常存放类的数据成员,而类成员函数通常存放在public中,并且通过public中成员函数方法来对私有数据成员进行初始化等操作,在类外不通过类对象来直接访问类私有数据,而是通过类对象调用类成员函数,对私有数据原创 2016-01-16 14:50:48 · 442 阅读 · 0 评论 -
类运算符重载+友元函数(二)
#include using namespace std;/* 需要声明吗?有无此声明均可以,为什么?C语言如果main函数放在前面就需要函数声明!class Complex;Complex operator+(const Complex &c);ostream& operator<<(ostream &out, const Complex &c);istream& operator原创 2016-01-16 17:50:56 · 1152 阅读 · 0 评论 -
创建并打开文件
#include #include using namespace std;void main(){ ofstream outfile; outfile.open("test.txt");// 如果没有该文件,将自动创建 if (outfile.is_open()) cout << "文件打开正确!" << endl; else cout << "文件打开失败!" <<原创 2016-03-01 20:42:00 · 414 阅读 · 0 评论 -
Lambdas(C++11新增)
Lambdas 语法no parameters: […] {…}[] { std::cout << "hello lambda" << std::endl; }You can call it directly: [] { std::cout << "hello lambda" << std::endl; } (); // prints ‘‘hello lamb原创 2016-03-02 17:50:02 · 660 阅读 · 0 评论 -
stream(流) iterator之一个例子
The following example is typical for the power of the whole STL. Compared with ordinary C orC++, the example does a lot of complex processing by using only a few statements:Using vector#incl原创 2016-03-03 09:40:13 · 1074 阅读 · 1 评论 -
Regex Iterators
These iterators are of type regex_iterator思考下面两点的功能:smatchstr(), str(1), str(2)/* The following code example is taken from the book* "The C++ Standard Library - A Tutorial and Reference,原创 2016-03-03 13:17:02 · 644 阅读 · 0 评论 -
copy()作为标准输入设备和标准输出设备之间的数据筛检程序
程序读取一行string,并以一行一个的方式打印它们:#include #include #include #include using namespace std;void main(){ copy(istream_iterator(cin), // begin of sourse istream_iterator (), // end of sourse os原创 2016-03-03 23:40:05 · 452 阅读 · 0 评论 -
序列式容器List之初始化及其几种(不支持随机)访问形式
#include #include #include using namespace std;void show(char elem){ cout << elem << " ";}int main(){ list coll; // list container for character elements // append elements from 'a'原创 2016-03-05 00:22:28 · 1671 阅读 · 0 评论 -
Ranged-Based for loop vs. iterator
基于范围的for循环和迭代器// coll为容器for (type elem : coll){ ...}被解释为:for (auto pos = coll.begin(), end = coll.end(); end != coll.end(); ++pos){ type elem = *pos; ...}原创 2016-03-05 09:38:39 · 427 阅读 · 0 评论 -
移除容器中与某值相等的元素
1. vector容器1.1 只移除“与某值相等”的第一个元素思路:利用算法寻找该值的位置,删除该位置指向的元素。vector<int> coll;...// 利用<algorithm>提供的算法find(),返回与val值相等的第一个元素(位置)auto pos = find(coll.begin(), coll.end(), val);// 删除与该值相等的第一个元素if(pos !=原创 2016-03-21 10:58:33 · 583 阅读 · 0 评论