Vector的一些事
2024-09-01 05:03:27
1、利用数组对vector进行初始化方法
当然有许多方法,这里就讲一种。原因简单,其他方式请参见这个博文:http://www.cplusplus.me/1112.html
int a[] = {-, , , , -};
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,注意字符串数组末尾有’\0’!通常我们可以利用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;
}
请按任意键继续. . .
最新文章
- java中一个查询业务的流程
- 【解决方法】magento paypal快速结账 不跳转
- 040. asp.netWeb中TreeView控件绑定XML文件
- S3C2440 LCD驱动(FrameBuffer)实例开发<;一>;(转)
- Linux分区有损坏修复
- ubuntu1204上不能正常用emacs配合gocode进行自动补全
- linux 密码安全脚本
- Lucene.net常见功能实现知识汇总
- 通过python为zabbix发送告警邮件
- Linux编程之有限状态机FSM的理解与实现
- zookeeper环境搭建及使用
- Oracle 测试环境 数据库安装过程
- 大数据【七】HBase部署
- Unity三消算法
- Single Number 数组中除了某个元素出现一次,其他都出现两次,找出这个元素
- error: no matching function for call to &#39;Ui::GoToCellDialog::setupUi(QDialog*&;)&#39; ui.setupUi(dialog); ^
- Server_id 冲突导致 IO 等待故障
- Git常用分支操作
- mysql中单表多timestamp设置default问题
- 生物数据库介绍——NCBI
热门文章
- Git 的一些使用细枝末节
- Weblogic &#39;wls-wsat&#39; XMLDecoder 反序列化_CVE-2017-10271漏洞复现
- nodejs中文乱码问题
- 微信小程序 键盘显示短信验证码
- Spring IoC控制反转创建实例
- WebRTC:数据传输相关协议简介
- 手动部署EJB于WebLogic
- Java设计模式学习笔记(五) 单例模式
- 学习2:内容# 1.while # 2.字符串格式化 # 3.运算符 # 4.编码初始
- 单元测试jest部署