vector的初始化和遍历

article/2025/8/28 19:49:19

这里只说明常用的vector初始化的方式。一般vector的初始化我还是比较习惯于像数组一样的初始化方式。一个一个赋值,或者用花括号的初始化。下面用一个程序来说明:

#include "stdafx.h"
#include <vector>
#include <iostream.h>
using namespace std;
int main(int argc, char* argv[])
{
int a[7]={1,2,3,4,5,6,7};
vector<int> ivector(a,a+7);//vector的赋值并不可以像数组一样方便的用花括号方便的完成赋值,这里借用了数组来初始化这个vector,初始化方
//式vector<elementType> intvec(begin,end);这样可以用起来看上去还是比较习惯的。
vector<int>::iterator iter;
for (iter=ivector.begin();iter!=ivector.end();iter++)
{
cout<<*iter<<'\0';
}
cout<<endl;
ivector[5]=1;//单个vector的赋值,这个方式看上去还是和数组一样的,不过你也可以这么写ivector.at(5)=1;但是就是不习惯
cout<<ivector[5]<<endl<<ivector.size()<<endl;
for (iter=ivector.begin();iter!=ivector.end();iter++)
{
cout<<*iter<<'\0';
}
return 0;
}


vector的遍历:

一般数组的遍历方式应该都知道怎么遍历。上面用了迭代器进行遍历,一般在STL中很常见,但是在vector中一样可以像在数组中用for循环进行遍历,由于在像链表,队列,栈这样的容器中没有办法用像遍历数组一样遍历,只能用迭代器,所以对于STL中通用用迭代器进行遍历。

但是还有一种简便的方式。

#include "stdafx.h"
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
void print(int n)
{
cout<<n<<'\0';
}
int main(int argc, char* argv[])
{
int a[7]={1,2,3,4,5,6,7};
vector<int> ivector(a,a+7);
vector<int>::iterator iter;
for_each(ivector.begin(),ivector.end(),print);//用for_each进行遍历  
cout<<endl;
ivector[5]=1;
cout<<ivector[5]<<endl<<ivector.size()<<endl;
for_each(ivector.begin(),ivector.end(),print);//用for_each进行遍历  
return 0;
}


 

这种方式的遍历引用另一篇文章:

对STL的容器中,遍历是一个非常经常采用的动作,为此STL也提供一个算法,for_each
遍历一个容器,我们第一个想到的是
for (int i = 0;i < a.size();++i)
的循环来实现。
这样做有几个弊端,比如我现在很多地方用vector作为传引用参数进行传递,为了减少对象构造和析构的代价,我一般采用指针来传递,那么我就要在程序很多地方 写上类似下面的代码
for (int i=0;i < a.size();++i)
     delete a[i];
虽然代码很多都一样,可是到处泛滥着这种循环语句,让人阅读程序容易和其它释放指针行为产生混淆
好处有几个:
1:for_each调用容器内部的遍历函数,比我们的++的方式遍历,效率不会低是肯定的
2:delete指针时候,可以再次确认指针类型
3:用仿函数类,编译器在编译期对函数进行展开,实际上没有函数调用的发生
4:加强代码自说明能力,减少循环,提高代码可读性

文章来自




http://chatgpt.dhexx.cn/article/dy2tRlvE.shtml

相关文章

c++ vector 初始化_C++--vector()的用法

vector()的用法 概念 vector 是向量类型&#xff0c;它可以容纳许多类型的数据&#xff0c;如若干个整数&#xff0c;所以称其为容器。vector 是C STL的一个重要成员&#xff0c;使用它时需要包含头文件&#xff1a; #include<vector>;一、vector的初始化 (1) vector&l…

C++中 std::vector 的6种初始化方法

1.vector<int> list1; 默认初始化&#xff0c;最常用 此时&#xff0c;vector为空&#xff0c; size为0&#xff0c;表明容器中没有元素&#xff0c;而且 capacity 也返回 0&#xff0c;意味着还没有分配内存空间。 这种初始化方式适用于元素个数未知&#xff0c;需要在…

怎样初始化二维vector

二维vector的初始化方法总结 初始化一个 二维vector,行M,列N学会用大括号初始化二维数组初始化一个 二维vector,行M,列不固定初始化一个二维vector,行列都不固定注意初始化二维vector为空时的情况leetcode例题1leetcode例题2 以定义一个二维整形数组并初始化为例&#xff1a; …

c++之vector 及 二维容器vector<vector<int>>初始化方法 及 三维数组初始化

C二维容器vector<vector>初始化方法解析 遇到的问题&#xff1a; 在解决“求最大字串”问题时想到了用二位数组vector<vector<int>> table&#xff0c;但是不知道怎么对其进行初始化&#xff08;初始化时指定二维容器的大小&#xff09;,于是网上搜索一番&a…

打算自学一些编程,想兼职程序员打零工,想问问现在哪个程序员兼职平台单子简单,不考察接单人学历?

兼职平台接单&#xff0c;都不查学历。 等你具备最基本的可以接单的技术能力时&#xff0c;找个技术工作&#xff0c;随随便便一份都能有2000以上。但是&#xff0c;自己接单&#xff1f;实不相瞒&#xff0c;会饿死的。没有什么钱是从一开始就坐在家里轻轻松松能赚到的。除非…

有哪些适合程序员的兼职?

前言 程序员兼职的方式有多种&#xff0c;在回答题主这个问题之前&#xff0c;我们先来了解一下当前互联网行业程序员为什么会选择兼职。 为什么程序员想要兼职&#xff1f; 在别人眼中程序员那是一个高薪的职业&#xff0c;近些年来&#xff0c;越来越多的程序员想在工作之…

不得不说,这19个程序员兼职平台让我1年收入60w

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间花在…

程序员兼职十大网站

前言 今天给大家介绍几个接私活的网站&#xff0c;接私活比较辛苦&#xff0c;如果弄不好的话&#xff0c;就是纯体力的劳动&#xff0c;大家也可以尝试做兼职远程开发。需要挣个生活费的小伙伴们&#xff0c;或者在校学生想锻炼自己的&#xff0c;可以去尝试一下。以下网站仅供…

各大程序员兼职平台靠谱嘛?这一篇文章就够了

搜索”程序员兼职“&#xff0c;能搜索到一堆营销软文&#xff0c;无非也就是你抄我&#xff0c;我抄你&#xff0c;换换顺序&#xff0c;今天我们不光谈优点&#xff0c;特点&#xff0c;还谈谈缺点&#xff0c;和大家关心的服务费问题&#xff0c;让大家看看到底哪个平台靠谱…

程序员去哪接私活?分享10个兼职平台,人已赚麻

你们当程序员不会都拿着几千、万把块钱的死工资吧&#xff0c;今天为大家分享一些可以接私单的平台&#xff0c;我反正已经赚麻了。 如果你的工作相对没那么费时间&#xff0c;可以空闲的时候去接点私活。或者是还没有找工作之前&#xff0c;可以通过一些平台接一些兼职&#…

Java程序员兼职平台推荐

有不少程序员兄弟时不时会私信问我&#xff0c;说自己是Java程序员&#xff0c;下班后或者是周六周末想要自己做点事情&#xff0c;有不有合适的Java兼职平台&#xff0c;在这里就做一个统一的回答&#xff1a; 平台到处都有&#xff0c;你可以找这样的平台,然后这样: 也可以找…

19个程序员兼职平台

关于程序员接私活&#xff0c;社会各界说法不一。 按我的观点来说&#xff0c;如果你确实急用钱&#xff0c;价格又合适&#xff0c;那就去做。 如果不怎么缺钱&#xff0c;那就接私活之前要好好考虑。 私活的钱不好挣是一个方面&#xff0c;更重要的是如果你把做私活的时间…

程序员兼职网站大全

在网上收集整理了一些程序员兼职网站&#xff0c;国内外都有&#xff0c;方便大家查阅使用。 一、国内垂直众包平台 1、猿急送-程序员兼职平台&#xff1a;https://www.yuanjisong.com/ 猿急送是于15年成立&#xff0c;国内起步很早的垂直众包平台&#xff0c;目前提供的兼职…

13个最靠谱的程序员兼职平台 想接私活的赶紧看过来

作为程序员&#xff0c;你有没有想过做些兼职&#xff0c;让自己的收入翻倍&#xff1f;有没有疑惑过身边的同事是从哪里接到那些私活的&#xff1f; 看完这篇文章你就能找到答案&#xff01; 其实网上有不少给程序员提供兼职的平台&#xff0c;老K根据自己和身边朋友的经验&a…

程序员兼职接私活平台大全,兼职也能月薪上万

前言 PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 &#x1f449;[[CSDN大礼包&#xff1a;《python兼职资源&全套学习资料》免费分享]]&#xff08;安全链接&#xff0c;放心点击&#xff09; 根据我们的经验&#xff0c;程序员兼职主要分为…

10个程序员可以接私活的平台和一些建议,兼职必看

今天为大家分享一些可以接私单的平台&#xff0c;相信大家学习编程未来是希望成为一个软件工程师或者码农&#xff0c;找到好的工作&#xff0c;有好的发展。 但是在还没有找工作之前&#xff0c;大家可以通过一些平台接一些兼职&#xff0c;一来能够赚钱&#xff0c;在主页保…

程序员接单必看的五个平台,最后一个赚麻了

当大多数程序员还拿着万把块钱的死工资时&#xff0c;有些人已经自己接私活赚麻了&#xff0c;今天为大家分享一些可以接私单的平台。 如果你的工作相对没那么费时间&#xff0c;可以空闲的时候去接点私活。或者是还没有找工作之前&#xff0c;可以通过一些平台接一些兼职&…

linux 查看版本的命令

1、通过 cat /proc/version 、uname 2、通过cat /etc/issue 、cat /etc/redhat-release 3、查看64位还是32位&#xff1a; 4、使用 file /bin/ls

Linux查看Gitlab版本

命令如下&#xff1a; cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

Linux系列之查看CentOS版本

文章の目录 写在最后 使用命令 [rootVM-4-12-centos local]# cat /etc/centos-release返回的结果如下图&#xff1a; 我这里的版本是CentOS7。 写在最后 如果你感觉文章不咋地//(ㄒoㄒ)//&#xff0c;就在评论处留言&#xff0c;作者继续改进&#xff1b;o_O??? 如果你觉得…