c++ 知识点总结:

# include<iostream.h>

void f()
{
    static int i = 15;
    i++;
    cout<< "i=" << i << endl;
}

void main()
{
    for(int k = 0; k < 2; k++)
        f();
}

上面这段代码输出结果为 i = 16, i = 17.

解析: 静态局部变量有一下特点:

1.该变量在全局数据区分配内存;

2.静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;

3.静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;

4.它始终主流在全局数据区,直到程序运行结束。但其作用于为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

 

 

#include<iostream>
#include<vector>
using namespace std;

int main(void)
{
    vector<int>array;
    array.push_back(100);
    array.push_back(300);
    array.push_back(300);
    array.push_back(500);
    vector<int>::iterator itor;
    for (itor = array.begin(); itor != array.end(); itor++)
    {
        if (*itor == 300)
        {
            itor = array.erase(itor);
        }
    }
    for (itor = array.begin(); itor != array.end(); itor++)
    {
        cout << *itor << " ";
    }
    return 0;
}

输出结果是 : 100  300 500

解析 : erase() 一次只删除一个元素,返回一个迭代指针,指向下一个元素 。本题中,删除了第一个300后,iter指向其后一个300,再通过iter++就指向了500.

 

 

子类与子类型

子类 : 说明了新类是继承自父类

子类型:强调的是新类具有父类一样的行为(未必是继承)。

 

 

计算二进制的一的个数,这个算法叫做平行算法。

int BitCount(unsigned int n)

{

    n = (n &0x55555555) + ((n >>1) &0x55555555) ; // n的相邻位相加

    n = (n &0x33333333) + ((n >>2) &0x33333333) ; // n的相邻位相加(以2为单位)

    n = (n &0x0f0f0f0f) + ((n >>4) &0x0f0f0f0f) ; // n的相邻位相加(以4为单位)

    n = (n &0x00ff00ff) + ((n >>8) &0x00ff00ff) ; // n的相邻位相加(以8为单位)

    n = (n &0x0000ffff) + ((n >>16) &0x0000ffff) ; // n的相邻位相加(以16为单位)


    return n ;

}

0xaaaaaaaa = 10101010101010101010101010101010 (偶数位为1,奇数位为0)

0x55555555 = 1010101010101010101010101010101 (偶数位为0,奇数位为1)

0x33333333 = 110011001100110011001100110011 (1和0每隔两位交替出现)

0xcccccccc = 11001100110011001100110011001100 (0和1每隔两位交替出现)

0x0f0f0f0f = 00001111000011110000111100001111 (1和0每隔四位交替出现)

0xf0f0f0f0 = 11110000111100001111000011110000 (0和1每隔四位交替出现)

平行法计算二进制中1的个数,二进制中利用相邻位相加,直到最后剩下一个数,求出1的个数。

 

 

源码  -> (扫描) -> 标记 -> (语法分析) -> 语法树 -> (语义分析) -> 标识语义后的语法树 -> (源码优化) -> 中间代码 -> (代码生成) -> 目标机器代码 -> (目标代码优化) -> (最终目标代码)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值