C++一些笔记

/*1----------预编译宏*/
#include<iostream>
using namespace std;
#define ABC

int main(){
	cout<<"1"<<endl;
#ifdef ABC
	cout<<"2"<<endl;
#endif
	cout<<"3"<<endl;
}
/*2----------容器和迭代器*/
//1.容器声明与操作
vector<int> vec;
vec.push_back(i);
vec.pop_back();//删除最后一个元素
//2.迭代器声明与遍历
std::vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
	std::cout<<(*it)<<" ";
//3.迭代器删除中间元素的注意事项
for(it=vec.begin();it!=vec.end();it++)
	if( (*it)>4 && (*it)<8 ){
		//删除vec容器中it所指向的元素,返回被删除元素的下一个元素的迭代器。
		it=vec.erase(it);//删掉5后it指向6,然后“it++"使it指向7。所以如果不用”it--",6不能被删除。
		it--;
	}
/*3----------new操作符*/
//1.new操作符返回地址
vector<int>* p=new vector<int>(10,3);//10个元素全是3
//2.获取指针所指内容的方法
for(it=(*p).begin();it!=(*p).end();it++)
for(it=p->begin();it!=p->end();it++)
/*4----------传值参数、传引用参数*/
//1.函数的声明与定义中参数列表中是否为引用类型,决定实参的值是否被改变。容器也是这样。
//2.区别void f(string); viod f(string &); void f(const string &);
//2.1 f(string)以传值的方式传递一个字符串参数。
//             参数匹配过程中,会调用string类的拷贝构造函数,构造一个新的字符串供f函数存取。
//             在f函数中修改形参,不影响实参。
//             实参可以是任意一个string对象,也可以是char*。
//2.2 f(string &)以传引用的方式传递一个字符串参数。
//             参数匹配过程中,不调用string类的拷贝构造函数,直接传一个引用。
//             在f函数中修改形参,会影响实参。
//             实参必须是变量型。
//2.3 f(const string &)以传引用的方式传递一个字符串参数。
//             参数匹配过程中,不调用string类的拷贝构造函数,直接传一个引用。
//             在f函数中不允许修改参数。
//             实参可以是变量型,也可以使用const型,可以是char*。

猜你喜欢

转载自blog.csdn.net/qq_26697045/article/details/86550040