vector的size和capacityreserve 与 resize 是区别的:reserve 用来给vector预分配存储区大小,即capacity的值
,没有给这段内存进行初始化。reserve
的参数是推荐预分配内存的大小,实际分配的可能等于或大于这个值。这样做的好处就是消除当往vector插入数据时,size 超过原来的默认分配的capacity值时
所带来的 内存重分配开销。resize 不仅会改变vector的capacity大小,而且会重置size值,在C++ STL中,很多部分(目前包括set,...
当年接触的第一门计算机语言是C,知道其是结构化程序语言、执行效率高、适合比较偏底层的软件开发......虽然之后也学过C++,探讨过C++存在的必要性(自然跟C无法适应一些情况有关),但因为眼界或经历受限,始终无法理解C++优于C的地方。因此,在以后的学习、开发过程中,总是优先考虑使用C,一致对C++的使用几乎为零,对外也不敢宣称自己熟悉C++。这种状态一直持续了本科直至现在研究生阶段度过大半,都依然自我感觉良好!!! ...
c++ goto 语句的使用1.定义一个类似标签的东西lable2.使用goto关键字,跳转到lable, goto lable 1 #include <iostream>2 #include <string>3 #include <stdlib.h>4 #include <stdio.h>5 6 7 #include "header3.h" 8 9usingnamespace std;
10void swap(int&, int&);
11//void swap(int, int);1213int main(){
14bool flag = true;
1516lable:
17 cout<<"hello world!"<<endl;
1819if(flag){
20 flag = !flag;
21goto la...
#include <iostream>#include <windows.h>#include <mutex>std::mutex gmutex;
usingnamespacestd;template<typename Type>
class Singleton
{
public:static Type* GetSingleton(){ if (siglen == NULL){unique_lock<std::mutex> lock(gmutex);//C++11加锁。if (siglen == NULL){siglen = new Type();Type *temp = new Type();MemoryBarrier();siglen = temp;}}return siglen;}
private:static Type* siglen;
};template<typena...
第三章1.头文件不应包含using声明,因为头文件的内容会拷贝到所有引用它的文件中去。2.初始化string对象的方式:string s1; //默认初始化,s1是一个空串string s2(s1); //s2是s1的一个副本string s2=s1; //等价于s2(s1)string s3("value"); //s3是字面值"value"的副本,除了字面值最后那个空字符外string s3="value"; //等价于s3("value")string s4(n,‘c‘); //把s4初始化为由连续n个字符c组成的串用等号初始化...
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即默认为隐式声明 {
public: char *_pstr; int _size; CxString(int size) { ...
c++文件的读写1.文本方式的写文件#include <iostream>#include <fstream>usingnamespace std;int main(){int ar[] = {1123,123,43,45,63,43,2,3};//方法1,ios::out含义是也写的方式打开流ofstream ofile1("./test.txt", ios::out);//方法2ofstream ofile2;ofile2.open("./test.txt"); if(!ofile1){//文件打开失败cerr << "open err" << endl;exit(1);}for(int i = 0; ...
(期末考试快到了,所以比较粗糙,请各位读者理解。。)一、 概念DBSCAN是一种产生划分聚类的基于密度的聚类算法,簇的个数由算法自动地确定。低密度区域中的点被视为噪声而忽略,因此DBSCAN不产生完全聚类。二、 伪代码1 将所有点标记为核心点、边界点和噪声点。2 删除噪声点。3 为距离在Eps之内的所有核心点之间赋予一条边。4 每组连通的核心点形成一个簇。5 将每个边界点指派到一个与之关联的核心点的簇中。...
我们都知道new是用来在程序运行过程中为变量临时分配内存的C++关键字,那它跟C语言中的malloc有什么区别呢,相比之下又为什么推荐使用new呢c++11throwing(1) void* operatornew (std::size_t size);nothrow(2) void* operatornew (std::size_t size, const std::nothrow_t& nothrow_value) noexcept;
placement(3) void* operatornew (std::size_t size, void* ptr) noexcept;<stdlib.h>
void *malloc(size_t size);1. 申请的内存所...
今天在学习数据结构的时候,出现了这样一段算法结构:1void swap(int &p1,int &p2)
2{
3int p;
4 p=p1;
5 p1=p2;
6 p2=p;
7 } 这段算法,可以实现swap(a,b)两个实参的交换。于是百思不得其解,int &p1到底是什么类型?课本上介绍了,这种类型在C++中为引用类型,查阅资料可知,引用是某一变量的别名,对引用的操作实际上和对变量的操作是一样的。引用本身不占存储单元,它并不是新定义的一个变量。所以说,对引用...
1、scanf scanf以%s格式符读入字符串,会以空格为结束,也就是无法将空格读入。如果换成%c就可以读入,但是无法一次性读入一整行字符。2、fgets 显然,fgets是一个读取带空格字符串的利器,简单方便。3、getchar()利用getchar(),getchar可以读入换行还有空格,有时候有些函数无法读入换行,比如cin,但是会留在缓冲区,就可以利用getchar去吸收。上面的代码可以实现循环读入带有空格的字符串,并且以换行结束字符串。 4、getl...
#include <iostream>int main(int argc, char** argv) {int i = 1;int *n ;n=&i;<span style="white-space:pre"> </span>//*n=i 这种赋值方式也可以std::cout<<"i为:"<<i<<std::endl;std::cout<<"n为:"<<n<<std::endl;std::cout<<"*n为:"<<*n<<std::endl; return 0;
}调试截图:从调试结果可以看出,n是地址值,*是取,*n是取值;&是取,&i是取地址值。原文:http://blog.csdn.net/qingbowen/article/details/46469095
如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数:double add(double x, double y){return x + y;} 现在我想要在Matlab中使用它,比如输入: >> a = add(1.1, 2.2) 3.3000要得出以上的结果,那应该怎样做呢?解决方法之一是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便。MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的。可以这样理解,MEX文件实现了一种接口,它把在Mat...
编译器在检测到有对象创建、赋值或者以copy构造函数的方式创建对象时会自动生成函数: /*‘).addClass(‘pre-numbering‘).hide();$(this).addClass(‘has-numbering‘).parent().append($numbering);for (i = 1; i ‘).text(i));};$numbering.fadeIn(1700);});});
/*]]>*/原文:http://blog.csdn.net/ganxiang2011/article/details/45582651
3.1 using声明 using namspace::name;一旦使用了using声明,就可以直接引用名字,不需要再引用该名字的命名空间3.2 string类型读入未知数目的string对象while(cin >> word){cout << word << endl;
}用getline读取整行文本,默认遇到换行符结束( 不存储换行符 )while(getline(cin, line){cout << line << endl;
}string对象的赋值从概念上讲,赋值操作先把左操作数占用的空间释放,再分配足够存放右操作数的内存空间,最后将右操...