• Vector的一些事


    1、利用数组对vector进行初始化方法

    当然有许多方法,这里就讲一种。原因简单,其他方式请参见这个博文:http://www.cplusplus.me/1112.html

    int a[] = {-1, 1, 1, 1, -1};
    vector<int> n(a, a+sizeof(a)/sizeof(int));

    这里面涉及指针的知识与sizeof的用法。

    指针偏移 其实移动的是某一个类型大小的值。

    特性3:sizeof能求得静态分配内存的数组的长度!

    Int a[10];int n = sizeof(a);

    假设sizeof(int)等于4,则n= 10*4=40;

    特别要注意:charch[]=”abc”;sizeof(ch);

    结果为4,注意字符串数组末尾有’’!通常我们可以利用sizeof来计算数组中包含的元素个数,其做法是:int n = sizeof(a)/sizeof(a[0]);

    非常需要注意的是对函数的形参数组使用sizeof的情况。举例来说,假设有如下的函数:

    void fun(int array[10])

    {

             int n = sizeof(array);

    }

    你会觉得在fun内,n的值为多少呢?如果你回答40的话,那么我很遗憾的告诉你,你又错了。这里n等于4,事实上,不管形参是int的型数组,还是float型数组,或者其他任何用户自定义类型的数组,也不管数组包含多少个元素,这里的n都是4!为什么呢?原因是在函数参数传递时,数组被转化成指针了,或许你要问为什么要转化成指针,原因可以在很多书上找到,我简单说一下:假如直接传递整个数组的话,那么必然涉及到数组元素的拷贝(实参到形参的拷贝),当数组非常大时,这会导致函数执行效率极低!而只传递数组的地址(即指针)那么只需要拷贝4byte。

    // Vector_Learning.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <vector>
    #include <iostream>
    
    using namespace std;
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int int_array[] = {1, 2, 3, 4};
    	for(int i = 0; i < 4; i++) {
    		cout << int_array[i];
    	}
    	cout << endl;
    		
    	std::vector<int> vec_int(int_array, int_array+4);
    	for(vector<int>::iterator ite_vec_int = vec_int.begin(); 
    		ite_vec_int != vec_int.end();
    		ite_vec_int++){
    			cout << *ite_vec_int;
    			(*ite_vec_int)++;
    	}
    	cout << endl;
    
    	for(vector<int>::iterator ite_vec_int = vec_int.begin(); 
    		ite_vec_int != vec_int.end();
    		ite_vec_int++){
    			cout << *ite_vec_int;
    	}	
    	cout << endl;
    
    	for(int i = 0; i < 4; i++) {
    		cout << int_array[i];
    	}
    
    	return 0;
    }
    

      

    1234
    1234
    2345
    1234
    请按任意键继续. . .

     

  • 相关阅读:
    第 4 章 MySQL 安全管理
    第 3 章 MySQL 存储引擎简介
    第 2 章 MySQL 架构组成
    道教的【五行】学说
    【matlab】MTATLAB解线性方程组
    RPolar项目进度记录
    numpy和TensorFlow的函数
    卷积
    腾讯QQ空间超分辨率技术TSR
    混元桩
  • 原文地址:https://www.cnblogs.com/khldragon/p/4472289.html
Copyright © 2020-2023  润新知