C++笔试题

更新中...

----------------------------------------------------------------------------

const int a; int const a; const int *a; int * const a; int const * a const; 之间的区别?

const int a == int const a, 定义int常量a

const int *a; 可写作int const* a表示a是一个指针,可以任意指向int常量或者int变量,它总是把它所指向的目标当作一个int常量。

int * const a; 表示a是一个指针常量,初始化的时候必须固定指向一个int变量,之后就不能再指向别的地方了。

----------------------------------------------------------------------------

i++ 与 ++i 的效率哪个更高?

++i 比 i++ 的效率更加高一些,因为++i 不用生成临时变量而 i++要生成临时变量

----------------------------------------------------------------------------

自定义类型的 前缀++i 和后缀i++的重载的实现方式有什么区别?

自定义类型的 前缀和后缀 的重载的 实现方式如下:

说明:如果考虑对 前缀(++i --i) 重载形式为  Type operator++() ;

后缀(i++ i--)的重载形式为:Type operator++(int); (这样定义是为了实现前缀与后缀的区分)

//++i 的实现方式   
INT INT::operator++()  
{  
    *this = *this +1;  
    return *this;  
}  
  
//i++的实现方式  
const INT INT::operator++(int)  
{  
    INT oldvalue = *this;  
    *this = *this+1;  
    return oldvalue;  
}  

----------------------------------------------------------------------------

迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。

(1) 每种容器类型都定义了自己的迭代器类型,如vector:  vector<int>::iterator iter; 可以使用迭代器读取vector中的每一个元素.

(2) iterator除了进行++,--操作,可以将iter+n,iter-n赋给一个新的iteraor对象。还可以使用一个iterator减去另外一个iterator.

----------------------------------------------------------------------------

C++ vector的用法?

C++标准库里vector是一种数据结构,一种顺序容器。可以创建vector对象,插入并删除元素,使用下标访问,读取向量大小,清空容器,排序,反转

其中的元素是严格按照线性顺序排列储存的,可以理解为动态数组,操作和常规的数组类型类似;

不同的是,vector里的存储空间分配自动完成,可以根据需要动态扩容和缩小

# include<vector>

vector<int> vec   // 创建vector对象,类型可以是int, double, string, 结构体

vec.push_back(a)  // 尾部插入数字

v.push_back( i ); //把元素i存入到vector中i

//定义一个二维的动态数组,有10行,每一行是一个用一个vector存储这一行的数据。

所以每一行的长度是可以变化的。之所以用到vector<int>(0)是对vector初始化,否则不能对vector存入元素。

vector< vector<int> > Array( 10, vector<int>(0) ); 

vector 定义结构体对象案例:

#include<stdio.h>
#include<algorithm>
#include<vector>
#include<iostream>
using namespace std;

typedef struct rect
{
    int id;
    int length;
    int width;

  //对于向量元素是结构体的,可在结构体内部定义比较函数,下面按照id,length,width升序排序。
  bool operator< (const rect &a)  const
    {
        if(id!=a.id)
            return id<a.id;
        else
        {
            if(length!=a.length)
                return length<a.length;
            else
                return width<a.width;
        }
    }
}Rect;

int main()
{
    vector<Rect> vec;
    Rect rect;
    rect.id=1;
    rect.length=2;
    rect.width=3;
    vec.push_back(rect);
    vector<Rect>::iterator it=vec.begin();
    cout<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl;    

return 0;

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值