C++的一些零散知识

1、srand(time(0))用法的含义;

这是用于初始化随机函数发生器的,计算机中的随机函数在生成一个随机数时需要用到一个称为随机数发生器的东西,如果不对其进行初始化,每次生成的随机数就会是相同的。 srand函数就用来初始化这个发生器,参数time(0)能够生成从1970年1月1日到当前机器时间的秒数,这个数在你每次执行程序的时候都会不断增长、变化,所以用它当做种子来初始化发生器,就会生成不同的随机数了。

2、setw(int n);
在C++中,setw(int n)用来控制输出间隔。
例如:

cout<<'s'<<setw(8)<<'a'<<endl;

则在屏幕显示
s a
setw()只对其后面紧跟的输出产生作用,如上例中,表示’a’共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出。
setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
如: cout<<setfill('*')<<setw(5)<<'a'<<endl;
则输出:
***a //4个和字符a共占5个位置。

3、C++中数组和vector的几个注意方面;
数组是由相同类型的相关数据项组成的数据结构;结构体和类都可以拥有不同类型的相关数据项。
(1)初始化和声明数组时,数组的大小必须指明,不能改变。
(2)C++标准库类模板vector表示一个更健壮的数组时,会看到vector对象的大小是内置的,每个vector对象“知道”它自己的大小,这可以通过vector对象的size成员函数得到。所以在传递vector对象给函数时,不需要把vector的大小作为实参传递。
(3)C++按引用传递的方式将数组传递到函数中,被调用函数可以修改在调用者的原始数据中的元素值。
(4)虽然整个数组是按引用传递的,但是单个的数组元素和简单的变量一样,都是按值传递的。以下程序3.1显示编译器验证了上述的观点。

// 3.1
#include<iostream>
#include<iomanip>
using namespace std;

void modifyArray(int[],int);
void modifyElement(int);

int main()
{
    const int arraySize = 5;
    int a[arraySize] = { 0, 1, 2, 3, 4 };

    cout << "输出引用之前的整个数组:" << "\n\n原始数组的值:\n";
    for (int i = 0; i < arraySize; i++)
        cout << setw(3) << a[i];
    cout << endl;

    modifyArray(a, arraySize);
    cout << "修改后的数组:\n";

    for (int j = 0; j < arraySize; j++)
        cout << setw(3) << a[j];

    cout << "输出引用之前的数组元素值:" << "\n\na[3]引用之前的值:\n" << a[3] << endl;

    modifyElement(a[3]);

    cout << "a[3]引用之后的值: " << a[3] << endl;
    system("pause");
    return 0;
}

void modifyArray(int b[], int sizeOfArray)
{
    for (int k = 0; k < sizeOfArray; k++)
        b[k] *= 2;
}
void modifyElement(int e)
{
    cout << "a[3]引用之后的值:" << (e *= 2) << endl;
}

其实有时候不应该允许函数修改数组元素(尤其是作为引用参数时),C++提供const限定符来防止被调用函数的代码中修改数组值。

4、vector的介绍。

vector是一种更健壮的、有很多附加能力的数组。例如C++不检查下标是否超出数组的有效范围;标准库模板vector在头文件中定义,属于名空间std。
vector的一些特性:首选他可以多态的改变长度。当一个vector的内存空间耗尽时,它会分配一个更大的连续空间,把原先的数据复制到新的空间,并把原空间释放。与原生数组相比,vector可以相互赋值,这对基于指针的、类c的数组来说是不可能的,因为那些数组的名称只是一个指针常数,不能作为左值被赋值。
front返回vector的第一个元素的引用,back返回vector的最后一个容器的引用,push_back在vector的末端插入一个新元素,pop_back删除容器中的最后一个元素。
integers1.size()能获得integers1的大小(元素个数);
vectorinteger1(7);表示含有7个整型元素的vector;

void outputVector(const vector< int > &array)
{
    size_t i; // declare control variable

    for (i = 0; i < array.size(); i++)
    {
        cout << setw(12) << array[i];

        if ((i + 1) % 4 == 0) // 4 numbers per row of output
            cout << endl;
    }

    if (i % 4 != 0)

void inputVector(vector< int > &array)
{
    for (size_t i = 0; i < array.size(); i++)
        cin >> array[i];
}
void outputVector(const vector< int > &); // 显示vector里面的元素;
void inputVector(vector< int > &); // 向vector里输入数值;
    vector< int > integers3(integers1);;//调用复制构造函数将 integers1赋值给integers3
 integers.capacity();// capacity返回了vector在为容纳更多元素调整空间前可以存储的元素个数;
   integers.push_back( 2 ); 
   integers.push_back( 3 ); 

依次向vector中插入元素;

你可能感兴趣的:(C++)