size + 1]; _capacity = _size; strcpy(_str, str); } ///拷贝构造: 如s1...= 0; } 二·string内正向迭代器实现: 在这路可以把它看成指针来对其模拟操作: typedef char* iterator; typedef const...return *this; } 七·swap和c_str()实现: void string:: swap(string& s) { //利用运算符重载出的赋值函数完成: string tmp...=(const string& s); 返回c在string中第一次出现的位置 size_t find(char c, size_t pos = 0) const...; 返回子串s在string中第一次出现的位置 size_t find(const char* s, size_t pos = 0) const;
【C++】vector 常用成员函数的模拟实现 1. vector 常用成员函数的模拟实现 2. vector 常用成员函数实现后的测试 #include #include<iostream..._start; } const_iterator end() const { return _finish; } // vector v(10, 1);//如果无函数...*first); ++first; } } //由于声明时已经初始化给予了缺省参数,所以此处不写初始化列表初始化 vector() {} //原始方法实现拷贝构造函数...swap,因为我们这里是在自己实现vector成员函数 std::swap(_start, v....//内置类型如:int与int()无差别 void resize(size_t n, const T& val = T()) { if (n < size()) { _
Objective-C中编写省略参数的多参数函数 引语: 在Object-C中,我们会遇到很多像NSLog这样的函数,其中参数的个数不确定,由程序员自由控制,在初始化数组,字典等方面应用广泛,那么,这类的函数是如何实现的呢...我们怎么编写我们自己的省略参数的函数呢?当然,这不是唯一的多参函数的处理方法,你也可以通过一个字典或者数组传递参数。但C为我们提供的这样的一种机制,无疑是最方便的。...一、了解几个概念 va_list C语言中定义的一个指针,用于指向当前的参数。...,比如如果一个函数参数如下: void func(int a,int b,int c,int d) 那么传递参数的时候参数d先入栈,接着是c、b、a。...三、声明与实现省略参数的多参函数 "..."这个符号就是我们用来实现省略参数函数的符号。例如我们模拟实现一个log函数如下: -(void)myLog:(NSString *)str,...
迭代器初始化: vector v4(++v2.begin(),v2.end()--);//把v2部分范围给v4初始化 2.vector增长: 如:size;capacity(vs是1.5倍扩...3·vector增删查改: 如:push_back;pop_back;find(这时algorithm算法库内的函数,也是使用迭代器区间:找到了返回指向那个位置的迭代器,否则返回右区间);insert;...三·vector模拟实现部分主要函数: 首先要知道这个模拟过程如图一样: 由于是类模版,一般定义和声明不能分文件,故可以都写在.h文件: 首先先不写构造,但是编译器默认生成的构造来,可能会给成员变量野指针...对于缺省参数:如果未给值就会掉此类型默认构造(T()为匿名对象),对于内置类型如:char,int等这就是'\0',0。如果是自定义类型:就是它的默认构造函数构造出的对象。...) { std::cout << *it << " "; ++it; } std::cout << std::endl; } 四·vector模拟实现过程中遇到的问题总结
参考链接: C++中用户定义函数的类型 定义: #include double pow( double base, double exp ); The pow() function returns...pow函数的作用是求幂。 数学公式:计算x的y次幂; 返回值:x不能为负数且y为小数,或者x为0且y小于等于0,返回幂指数的结果; 返回类型:double型。
exec()函数在C++中是一个进程控制函数,用于创建新进程执行其他程序或命令行指令。exec()函数可以替换当前进程的代码和数据,创建新的进程运行其他程序。...前言 fork 函数之后,如果想要把子进程换成一个我想要执行的进程,这时,就不得不使用 exec()函数了,这也是 fork()的意义所在。...在这里参数传递方式是以函数名的第5位字母来区分的,字母为“l”(list)的表示逐个列举的方式,字母为“v”(vertor)的表示将所有参数整体构造成指针数组传递,然后将该数组的首地址当做参数传给它,数组中的最后一个指针要求是...a.out execlp.c fork_example myshell.c .....execl.c fork.c fork_example.c 可以看到,它成功地执行了"ls -a"命令。
二·库内常用接口函数使用: 这里简单介绍一下除了下面要实现的接口函数还有些其他接口函数: 1·reverse(): 对于以前的vector和string,它们用的是算法库里的,故括号里还要传迭代器区间,...3.merge(): 即把两个list对象按升序拼接起来(前提是两个对象都是有序的,不是的话要提前给它sort一下),最后拼到前者对象,后者对象清空,如: list lt; lt.emplace_back...= lt.end()) { cout << *it << " "; it++; } 三·list的模拟实现相关函数接口: 框架构造:list是吧每个节点连接起来,故首先把节点封装成一个类,接着由于迭代器相当于节点指针...如: 节点类: namespace li { template struct list_node { list_node* _pre; list_node* _next;...其实是为了:如果这里面的val放的自定义类型如: struct AA { int a1 = 1; int a2 = 2; }; 这时候这个操作就可以直接访问到val里的a1,a2,而不用再有通过AA
string::append官方介绍网址 append()函数:是向string 的后面追加字符或字符串。 常用的函数原型、简例: 1.在字符串的末尾添加字符串str。...如下: string s1 = "hello"; string s2 = "the world"; s1.append(s2,4,5); //把字符串从s2中从4开始的5个字符连接到当前字符串的结尾...s1 = "hello world"; 2)若是添加的子串中只有索引开始的位置,没有长度,则表示字符串从第n个字符到末尾的字符连接到当前字符串末尾,如下: string s1 = "hello"; string...s2 = "the world"; s1.append(s2, 3); 运行结果为:s1="hello world" 3.在字符串的末尾添加字符串s中的前n个字符。...把c类型字符串c的前n个字符连接到当前字符串结尾,如下: string s = "hello"; const char*c = "the world"; s.append(c,3); 运行结果为:s="
参考链接: C++ fflush() fflush()函数与rewind()函数都可以使得scanf()函数屏蔽之前输入的回车符。这两个函数的参数都可以是stdin变量。...默认情况下,stdin从键盘中读取数据,而stdout和stderr将信息在显示器中显示。这三个变量是常量指针,不能对其进行赋值。...该代码用在scanf()函数之前,用于屏蔽输入缓冲区中的回车符号。...scanf(“%d”, &i); fflush(stdin); scanf(“%d”, &j); 3 rewind()函数 也可以是用rewind()函数来清理输入缓冲区中的数据,达到屏蔽回车符号的作用...该函数的使用方法请参考《C++中getchar()的使用方法》
1,list的底层是双向链表结构,双向链表中,每个元素存储在互不相关的节点中,在节点中保存着指向前一个节点和后一个节点的指针。...二,list的一些基本使用 2.1,list的构造函数 list() //无参构造函数 list(size_t n,const value_type& val = value_type())...list lt3(lt2.begin(), lt2.end()); //迭代器区间构造 list lt4(lt2); //拷贝构造 } 注:C+...); cout << "erase:"; for (auto e : it) cout << e << " "; cout << endl; } 三,list的模拟实现...++_size; //插入后,数据个数++ } private: Node* _head; //头节点 size_t _size; //记录数据个数 }; } 3.4,简单测试
1、仿函数的概念 仿函数是一个是通过重载()运算符模拟函数形为的类。...)(str)<<endl; //使用方法2 Test t(len2); qDebug()<<t(str)<<endl; return a.exec(); } 3、仿函数的应用场景...对于上面应用,很明显,可以简单定义一个比较的函数,用来处理字符长度的比较工作。...因此,如果想要利用仿函数,一定是需要用到仿函数类的功能,譬如:仿函数类定义的时候,可以传递一个参数,()操作的时候,也可以传递参数,两种参数有作用优先级的时候,可以考虑这种使用方法。...public: Operation *opt = nullptr; explicit Test(char op) : operate(op){} //通过仿函数
参考链接: C++ ceil() C语言中 1.floor函数 功能:把一个小数向下取整 即就是如果数是2.2 ,那向下取整的结果就为2.000000 原型:double floor(doube...参数解释: x:是需要计算的数 返回值: 成功:返回一个double类型的数,此数默认有6位小数 无失败的返回值 头文件:#include 示例 floor函数计算后的结果为...= ceil(2.7); printf("i=%d,j=%d\n", i, j); system("pause"); return 0; } 运行结果: 3.round函数...f\n", j); printf("The round of -2.7 is %f\n", y); system("pause"); return 0; } 运行结果: C+...+中 1.floor函数 #include using namespace std; int main() { double i = floor(2.2); double
using namespace std; int main() { string s("12345asdf"); string a = s.substr(0,5); //获得字符串s中从第...cout << a << endl; } 输出结果为:12345 【更多】 用途:一种构造string的方法 形式:s.substr(pos, n) 解释:返回一个string,包含s中从...pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s) 补充:若pos的值超过了string的大小,则substr函数会抛出一个out_of_range
也可以才能出STL标准容器,如set,string,vector等 二,构造函数 vector(size_t n,T val) ...(v1); //1 1 1 1 1 vector v3(v1.begin(), v1.end()); /1 1 1 1 1 } 三,初始化方法 1,使用圆括号赋值 也就是调用构函数...= v.end()) { cout << *it << " "; it++; } cout << endl; } 五,常用函数 1,push_back v.push_back(x),就是在...v.resize(8, 1); for (auto e : v) cout << e << " "; cout << endl; } 6,clear() clear()用来清空vector中的所有元素...,时间复杂度为O(N),N为vector中的元素个数: void Test_vector8() { vector v; for (int i = 1; i <= 3; i++) v.push_back
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1 三角函数 double sin (double); double cos (double); double tan...double pow (double, double); double sqrt (double); double log (double); 以e为底的对数 double log10 (double);c+...+中自然对数函数:log(N) 以10为底:log10(N)但没有以2为底的函数但是可以用换底公式解 决:log2(N)=log10(N)/log10(2)5 取整 double ceil (double...double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 double fmod (double, double); 返回两参数相除的余数 source: 《C...& C++ Code Capsules》9 平方根 sqrt
一,string的构造函数 string() //无参构造,初始化为空串 string(const string& str) //用str拷贝构造 string(size_t n,char c...hello world"拷贝构造str2 string str3(4, 'x'); //用4个字符'x'初始化 string str4(str2, 5, 6); //用str2中,...const string& str,size_t pos,size_t len=npos) 注:上面的缺省值npos,定义为:size_t npos=-1. npos为最大值,表示不传参数时,会用str中pos...); s.push_back('b'); //s中存放的字符串为"abc" 四,string的遍历 迭代器遍历或者下标遍历 string str1("hello world"); //下标遍历 for...a b c d e f while (found !
resize()是分配容器的内存大小,而reserve()只是设置容器容量大小,但并没有真正分配内存。
调用过程中的任何线程,都可以在一个等待函数中指定事件对象句柄。当指定的对象的状态为有信号时,单对象等待函数(例如WaitForSingleObject)返回。...下面的对象共享机制是可行的: ·在CreateEvent函数中,lpEventAttributes参数指定句柄可被继承时,通过CreateProcess函数创建的子进程继承的事件对象句柄。 ...二、C++CreateEvent函数在多线程中使用及实例 下面主要演示一下采用CreateEvent实现多线程。...例子很简单,主要测试CreateEvent中bManualReset:和bInitialState参数的取值在线程调用中信号状态的情况。...修改:线程1中的SetEvent(hEvent);的注释去掉,再运行,则线程1和线程2 都会执行。
⭐Vector的模拟实现 在C++中,vector是一个非常常用的容器,它提供了一种动态数组的实现方式,允许我们在运行时动态地增加或减少元素的数量。...关于vector的使用可以转至【C++】深入探索vector,让你一次性学懂!...⭐二、成员变量和迭代器 在模拟实现vector时,我们首先需要定义这些成员变量,并定义迭代器类型。迭代器实际上就是原生指针的封装,因为vector是连续存储的。...initializer_list作为参数,并使用该初始化列表中的元素来初始化vector对象。...void resize(size_t n, const T& val = T())//调用对应的默认构造,int这些内置类型在模板出来以后也有了自己的构造,如int i = int(1); { if
C++中c_str函数的全面解析 摘要 在C++编程中,c_str()函数是std::string类的重要成员函数,用于将C++风格的字符串转换为C风格的字符串。...关键词 C++;c_str()函数;C风格字符串;字符串转换 引言 在C++编程中,std::string类提供了丰富的字符串操作功能,但在某些情况下,需要与C语言中的字符串处理函数进行交互。...3 c_str()函数的使用场景 3.1 与C标准库函数交互 许多C标准库函数(如strlen、strcpy、printf等)需要C风格字符串作为参数。...由于C++标准库中的字符串拼接操作通常返回std::string对象,而某些C风格字符串函数需要const char*类型的参数,因此可以使用c_str()函数进行转换。...%d 7.最后 本篇文章深入剖析了C++中c_str()函数。它详细介绍了c_str()函数的定义、返回值特性,如只读性、生命周期及空字符结尾。