版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Legends_Never_Die/article/details/86103341
1、关于vector的resize与reverse
resize(m)
若m<vector容量,则将size变为m,容器元素及capacity不变;否则,不但size变为m,capacity也将改变,大小不一定,但大于等于size,在原有容器元素后补0
vector<int>v;
v.resize(5); //size==capacity==5
vector<int>v(3,1);
v.resize(5); //size==5,capacity==6 ,容器元素:11100
reverse(m)
若m<vector容量,size,capacity不做任何改变;否则,capacity变为m,size不变
2、
ostream& operator<<(ostream&os,const f&a1) //如果是f&a1,则必须加const,否则报错;或者直接f a1;
{
os<<a1.a<<" "<<a1.b;
return os;
}
3、
template<int T> //参数不一定必须是类型
class A
{
public:
int a;
public:
A(){a=T;}
};
int main()
{
A<5>k;
cout<<k.a<<endl;
return 0;
}
4、
void f1(const pair<int,int>&p) //不加const会报错
{
cout<<p.first<<" "<<p.second<<endl;
}
int main()
{;
map<int,int>m;
m.insert(pair<int,int>(1,2));
m.insert(pair<int,int>(3,2));
m.insert(pair<int,int>(-1,2));
for_each(m.begin(),m.end(),ptr_fun(f1));
return 0;
}
5、C++中成员变量如果不加权限修饰符,则默认私有
6、
class A
{
private:
vector<int>v;
public:
A(int*a,int*b):v(a,b){}
void display()
{
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
}
};
int main()
{
int a[]={1,2,3,4};
vector<int>b(4);
A k(a,a+4);
k.display(); //1 2 3 4
return 0;
}
7、
class A
{
int a;
int b;
public:
A(int a,int b):a(a),b(b){};
bool operator==(int k)
{
return a==k;
}
friend ostream& operator<<(ostream&os,const A&k);
};
ostream& operator<<(ostream&os,const A&k) //只能在全局定义
{
return cout<<k.a<<" "<<k.b; //再外面引用私有变量,必须将该函数声明为该类的友元函数
}
int main()
{
vector<A>v;
v.push_back(A(1,2));
v.push_back(A(-1,2));
v.push_back(A(10,2));
v.push_back(A(-1,2));
vector<A>::iterator it=v.begin();
while((it=find(it,v.end(),-1))!=v.end())
{
cout<<*it<<endl;
it++;
}
return 0;
}