C++/C
wu_lai_314
这个作者很懒,什么都没留下…
展开
-
vector::erase()方法的详细介绍及问题解答
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素vector::erase()方法有两种重载形式如下:iterator erase( iterator _Where);1.iterator erase( iterator _First, iterator _Last);如果是删除指定位置的元素时:返回值是一个迭代原创 2012-12-02 22:37:18 · 495 阅读 · 0 评论 -
c/c++ main 函数命令行参数的使用 知识小结
C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用的是有参函数,则参数在调用时传递。C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)int main(int原创 2012-12-31 10:29:49 · 30932 阅读 · 5 评论 -
STL 整理(map、set、vector、list、stack、queue、deque、priority_queue)
向量(vector) 连续存储的元素Vectorc;c.back() 传回最后一个数据,不检查这个数据是否存在。c.clear() 移除容器中所有数据。c.empty() 判断容器是否为空。c.front() 传回地一个数据。c.pop_back() 删除最后一个数据。c.push_back(elem) 在尾部加入一个数据。c[i] 等同于 c.at(i);转载 2012-12-21 20:33:28 · 790 阅读 · 0 评论 -
随机数赋值,srand()放在循环体和循环体外的区别
这是一段由下面一段代码引发的血案:#include#include#include#define counter 1#define bool int#define true 1#define false 0int main(){ bool flag[100]; bool light=false; int count=0; int times=0; int原创 2012-12-06 16:48:35 · 3442 阅读 · 0 评论 -
#define的基本用法
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析1.1 #define的概念转载 2012-12-31 23:57:26 · 862 阅读 · 0 评论 -
STL 中map 和 set 的知识点总结
STL中的容器有顺序容器 (vector,list,deque),关联容器(map,set)还有一些其他容器。根据不同的场合选择不同的容器,会有意想不到的收获。Map是单词mapping(映射)的缩写Set是单词set(集合)的意思;Map和set内部的元素不可以重复,这一点不同于multimap和multiset。map 和 set使用相同的数据结构,原创 2012-12-26 19:06:06 · 8399 阅读 · 0 评论 -
STL中关于map和set的四个问题?
STL map和set的使用虽不复杂,但也有一些不易理解的地方,如:# 为何map和set的插入删除效率比用其他序列容器高?# 为何每次insert之后,以前保存的iterator不会失效?# 为何map和set不能像vector一样有个reserve函数来预分配数据?# 当数据元素增多时(10000到20000个比较),map和set的插入和搜索速度变化如何?转载 2012-12-26 19:32:24 · 3118 阅读 · 1 评论 -
STL之set使用方法小结
/*set/multiset会根据待定的排序准则,自动将元素排序。两者不同在于前者不允许元素重复,而后者允许。1) 不能直接改变元素值,因为那样会打乱原本正确的顺序,要改变元素值必须先删除旧元素,则插入新元素2) 不提供直接存取元素的任何操作函数,只能通过迭代器进行间接存取,而且从迭代器角度来看,元素值是常数3) 元素比较动作只能用于型别相同的容器(即元素和排序准则必须相同)s转载 2012-12-26 15:07:08 · 715 阅读 · 0 评论 -
C++中使用stl的set和hash_set
set的使用:#include#include#include#include#include//set_union()using namespace std;void main(){ string s1[3]={"aaa","bbb","ccc"}; string s2[3]={"bbb","ddd","eee"}; set sa(s1,s1+3);//申明一个se原创 2012-12-26 16:21:43 · 15676 阅读 · 0 评论 -
string char const char之间的转换
#include#include#includeusing namespace std;int main(int argc,char* argv[]) { char *x="123456"; cout<<"char x="<<"\""<<"123456"<<"\""<<endl; string s=x; char xp[sizeof(s)]; str原创 2012-12-22 23:30:49 · 723 阅读 · 0 评论 -
表达式求值与后缀表达式
一个算术表达式,含有数字(为简化处理,数字只有一位),运算符:+、-、*,以及括号,求表达式的值。 给出的表达式是一般我们见到的中缀表达式,即运算符位于操作数之间。如果把中缀表达式转化为后缀表达式,那么对后缀表达式求值将会很方便。 后缀表达式特点: 1.操作符位于操作数之后; 2.没有括号; 3.运算符没有优先级。 中缀原创 2012-12-09 15:04:12 · 4845 阅读 · 1 评论 -
C++ 中string.find() 函数的用法总结
#include #include using namespace std;void main(){ ////find函数返回类型 size_typestring s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");string flag;string::size_type position;//find 函数 返回jk 在s 中的下转载 2012-12-05 15:36:38 · 1434 阅读 · 0 评论 -
STL sort函数简介
做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)转载 2012-11-21 10:17:17 · 486 阅读 · 0 评论 -
求多个数最小公倍数的一种变换算法
令[a1,a2,..,an] 表示a1,a2,..,an的最小公倍数,(a1,a2,..,an)表示a1,a2,..,an的最大公约数,其中a1,a2,..,an为非负整数。对于两个数a,b,有[a,b]=ab/(a,b),因此两个数最小公倍数可以用其最大公约数计算。但对于多个数,并没有[a1,a2,..,an]=M/(a1,a2,..,an)成立,M为a1,a2,..,an的乘积。例如:[2,3翻译 2012-11-19 22:47:02 · 661 阅读 · 0 评论 -
最大公约数和最小公倍数(递归求法)
#includeusing namespace std;int GCD(int a,int b){ if(a%b==0) return b; else return GCD(b,a%b);}int LCM(int a,int b){ int tmplcm; tmplcm=a*b/GCD(a,b); return tmplcm;}int main(){ in原创 2012-11-19 22:09:41 · 713 阅读 · 0 评论 -
system("pause")详解
在编程语言中出现system,就是从程序中调用系统命令(和shell命令),而 system("pause")就是从程序里调用“pause”命令; 而“pause”这个系统命令的功能很简单,就是在命令行上输出一行类似于“Press any key to exit”的字,等待用户按一个键,然后返回。但是在调用的时候要用上头文件的#include ,如果是在DEV-C++原创 2012-11-18 20:43:19 · 7995 阅读 · 0 评论 -
STL vector erase 笔试 曼恒数字
其实vector的erase问题我以前自个写代码时就有遇到过,囧,只是又忘记了。去曼恒数字面试时有一道笔试题大概是这样子的,问下面的程序运行后会有什么问题:[cpp] view plaincopyvector int> a; a.push_back(1); a.push_back(2); a.push_back(4); a.push_back(3);原创 2012-12-02 22:11:14 · 754 阅读 · 0 评论 -
C语言的变参函数设计
在C语言中,函数参数的传递方式有值传和址传.值传是把实参的一个专用的、临时的复制值给被调函数中相应的形参被调用函数使用、修改这个传来的复制值,不会影响实参的值.址传则是把变量(实参)的地址传给被调函数.被调函数通过这个地址找到该变量的存放位置,直接对该地址中存放的变量的内容进行存取操作.因此,在被调用函数中可以修改实参的值.这也是函数参数址传的优点.无论是值传还是址传,都要求实参的数目及类型与形参转载 2013-11-20 20:56:37 · 927 阅读 · 0 评论