通过代码实例解析c++ vector常用方法

1. c++ vector 每个元素加上一个特定值 (c++ vector add a constant value for each element)

https://stackoverflow.com/questions/4461446/stl-way-to-add-a-constant-value-to-a-stdvector

vector<int> x = {0, 30, 80, 100, 120, 150, 190, 220, 250};
//transform可以将函数应用到序列的元素上,bind2nd通过绑定其中一个参数把二元函数转换成一元函数
transform(x.begin(), x.end(), x.begin(), bind2nd(plus<int>(), 1));
//显示x的值
copy(x.begin(), x.end(), ostream_iterator<int>(cout, " "));

结果: x = {1 31 81 101 121 151 191 221 251}

2. c++判断vector中是否存在某个元素(c++ judge whether an element exists in the vector)

https://www.techiedelight.com/check-vector-contains-given-element-cpp/

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
  std::vector<int> v = { 4, 7, 5, 2, 6, 9 };
  int key = 6;

  if (std::count(v.begin(), v.end(), key))
    std::cout << "Element found";
  else
    std::cout << "Element not found";

  return 0;
}

结果显示:Element found

3. c++ vector<int> 生成指定个数的顺序列表 (c++ generate a sequential vector<int> of special numbers)

https://stackoverflow.com/questions/17694579/use-stdfill-to-populate-vector-with-increasing-numbers

std::vector<int> seq(10);
 // 定义在 numeric 头文件中的 iota() 函数模板会用连续的 T 类型值填充序列
 std::iota(seq.begin(), seq.end(), 0);

结果: seq = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

4. c++ 一条语句打印vector信息(c++ print out vector by one statement).

https://stackoverflow.com/questions/10750057/how-to-print-out-the-contents-of-a-vector

vector<int> x = {1, 2, 3, 4};
 //istream_iterator用于从输入流中读取连续的元素
 copy(x.begin(), x.end(), ostream_iterator<int>(cout, " "));

结果显示: 1 2 3 4

5. c++ 得到vector<int>中元素的最大值和最小值以及最大值和最小值的索引位置 (c++ get the maximum and minimum values of the elements in vector<int> and the index positions )

https://riptutorial.com/cplusplus/example/11151/find-max-and-min-element-and-respective-index-in-a-vector

vector<int> row_y = { 502, 263, 684, 324, 979 };

// 最大值索引和最大值
int row_y_max_index = max_element(row_y.begin(), row_y.end()) - row_y.begin();
cout << "row_y_max_index = " << row_y_max_index << endl;
int row_y_max_value = *max_element(row_y.begin(), row_y.end());
cout << "row_y_max_value = " << row_y_max_value << endl;

// 最小值索引和最小值
int row_y_min_index = min_element(row_y.begin(), row_y.end()) - row_y.begin();
cout << "row_y_min_index = " << row_y_min_index << endl;
int row_y_min_value = *min_element(row_y.begin(), row_y.end());
cout << "row_y_min_value = " << row_y_min_value << endl;

结果返回:

row_y_max_index = 4
row_y_max_value = 979
row_y_min_index = 1
row_y_min_value = 263

6. c++ vector 相加两个vector (c++ append a vector to vector)

https://stackoverflow.com/questions/2551775/appending-a-vector-to-a-vector

vector<int> x = {0, 30, 80, 100, 120, 150, 190, 220, 250};
 vector<int> y = {100};
 y.insert(y.end(), x.begin(), x.end());

结果:y = {100, 0, 30, 80, 100, 120, 150, 190, 220, 250}

7. c++ 复制vector(c++ copy vector)

https://www.geeksforgeeks.org/ways-copy-vector-c/

vector<int> x = {0, 30, 80, 100, 120, 150, 190, 220, 250};
 vector<int> y;
 y.assign(x.begin(), x.end());

结果:y = {0, 30, 80, 100, 120, 150, 190, 220, 250}

8. c++ vector 根据给定索引删除元素(c++ vector delete element based on a given index)

https://iq.opengenus.org/ways-to-remove-elements-from-vector-cpp/

若想要删除第2个索引值和到第5个索引值,则可以使用下以语句:

vector<int> x = {0, 30, 80, 150, 120, 150, 30, 220, 80};
 //remove(x.begin(), x.end(), 80);
 x.erase(x.begin() + 2, x.begin() + 5 + 1);

结果: x = {0, 30, 30, 220, 80}

9. c++ 删除vector所有指定元素(c++ delete all specified elements in the vector)

https://www.techiedelight.com/erase-elements-vector-cpp/

vector<int> x = {0, 30, 150, 30, 220, 80};
 //vector中的remove的作用是将等于value的元素放到vector的尾部,但并不减少vector的size
 //vector中erase的作用是删除掉某个位置position或一段区域(begin, end)中的元素,减少其size
 x.erase(remove(x.begin(), x.end(), 30), x.end());

结果: x = {0 150 220 80}

10. c++ 统计 vector 某个元素出现的次数 (C++ count the number of occurrences of an element in vector)

https://www.geeksforgeeks.org/std-count-cpp-stl/

vector<int> x = { 0, 3, 5, 6, 3, 2, 3 };
 int n = count(x.begin(), x.end(), 3);

结果:n = 3

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c++中为什么不提倡使用vector示例详解

    vector< bool> 并不是一个STL容器,不是一个STL容器,不是一个STL容器! 首先vector< bool> 并不是一个通常意义上的vector容器,这个源自于历史遗留问题. 早在C++98的时候,就有vector< bool>这个类型了,但是因为当时为了考虑到节省空间的想法,所以vector< bool>里面不是一个Byte一个Byte储存的,它是一个bit一个bit储存的! 因为C++没有直接去给一个bit来操作,所以用operator[]

  • c++容器list、vector、map、set区别与用法详解

    c++容器list.vector.map.set区别 list 封装链表,以链表形式实现,不支持[]运算符. 对随机访问的速度很慢(需要遍历整个链表),插入数据很快(不需要拷贝和移动数据,只需改变指针的指向). 新添加的元素,list可以任意加入. vector 封装数组,使用连续内存存储,支持[]运算符. 对随机访问的速度很快,对头插元素速度很慢,尾插元素速度很快 新添加的元素,vector有一套算法. map 采用平衡检索二叉树:红黑树 存储结构为键值对<key,value> set 采用

  • C++ 中Vector常用基本操作

    标准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,下面通过本文给大家介绍,具体内容如下所示: (1)头文件#include<vector>. (2)创建vector对象,vector<int> vec; (3)尾部插入数字:vec.push_back(a); (4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的. (5)使用迭代器访问元素. vect

  • C++ vector使用的一些注意事项

    1. 初始化 c++ 11以后新增了大括号{}的初始化方式,需要注意与()的区别,如: std::vector<int> vecTest1(5);         //初始化5个元素,每个都是0 std::vector<int> vecTest2{ 5 };       //初始化1个元素,值是5 2.  添加元素:push_back 通过push_back添加新的元素进入vector后,vector的内存有时候会发生变化,这取决于size和capacity大小,当然这些都是系统来

  • C++实现动态顺序表(vector)

    vector是连续存储结构,支持随机的高效的随机和在尾部进行插入.删除操作,其它位置的插入.删除操作相对来说效率较低. vector相当于一个数组,但它的数组空间大小需要写一程序来实现. 它的内存分配原理大概可分为下面几步: 1)首先分配一块内存空间进行存储: 2)当所需存储的数据超过分配的空间时,再重新分配一块空间: 3)将旧元素复制到新空间: 4)释放旧空间. 实现代码如下: vector.h #pragma once #include<stdio.h> #include<asser

  • C++中stack、queue、vector的用法详解

    一.栈(stack) 引入头文件 #include<stack> 常用的方法 empty() 堆栈为空则返回真 pop() 移除栈顶元素 push() 在栈顶增加元素 size() 返回栈中元素数目 top() 返回栈顶元素 3.实例代码 #include<iostream> #include<stack> using namespace std; int main(){ //创建栈 s stack<int> s; //将元素压入栈 for(int i=0;

  • c++ vector 常用函数示例解析

    c++ vector 常用函数 Just like arrays, vectors use contiguous storage locations for their elements, which means that their elements can also be accessed using offsets on regular pointers to its elements, and just as efficiently as in arrays. But unlike ar

  • 通过代码实例解析c++ vector常用方法

    1. c++ vector 每个元素加上一个特定值 (c++ vector add a constant value for each element) https://stackoverflow.com/questions/4461446/stl-way-to-add-a-constant-value-to-a-stdvector vector<int> x = {0, 30, 80, 100, 120, 150, 190, 220, 250}; //transform可以将函数应用到序列的

  • vue封装swiper代码实例解析

    这篇文章主要介绍了vue封装swiper代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 data(){ return{ list:[], swiperOption:"", xiding : "", // 轮播高度 SwiperHeight:'' } }, mounted(){ this.onload() // 获取轮播图图片的高度 setTimeout(()=> { // 通过ref获取轮播dom

  • Python解析json代码实例解析

    这篇文章主要介绍了Python解析json代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是json格式: JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集. import json data = { "statusCode": 200, "data":

  • Python list运算操作代码实例解析

    这篇文章主要介绍了Python list运算操作代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在操作list的时候,经常用到对列表的操作运算,比如说,列表添加,删除操作,其实,这里面经常回遇到这样一个问题,就是列表的操作容易被混淆了. 有人做了一个总结,这个很清晰,我就不多做阐述了: 1.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加 2.extend() 向列表尾部追加一个列表,将列表中的每个元

  • spring cloud gateway网关路由分配代码实例解析

    这篇文章主要介绍了spring cloud gateway网关路由分配代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1, 基于父工程,新建一个模块 2,pom文件添加依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-

  • Spring Bean装载方式代码实例解析

    这篇文章主要介绍了Spring Bean装载方式代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Bean的装配方式 Bean的装配可以理解为依赖关系注入 基于XML的装配 a) 设值注入 i.要求: Bean 类必须提供一个默认的无参构造方法. Bean 类必须为需要注入的属性提供对应的setter方法. b) 构造注入 package com.itheima.assemble; import java.util.List; pub

  • Python随机数函数代码实例解析

    这篇文章主要介绍了Python随机数函数代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 ''' choice(seq) 从序列的元素中随机选出一个元素 randrange ([start,] stop [,step]) 从指定范围内,在指定步长递增的集合中 获取一个随机数,步长默认为 1 .注:不包含 stop 值 random() 随机生成下一个实数,它在[0,1)范围内. shuffle(lst) 将序列的所有元素随机排序,返回

  • RocketMQ重试机制及消息幂代码实例解析

    这篇文章主要介绍了RocketMQ重试机制及消息幂代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.重试机制 1.由于MQ经常处于复杂的分布式系统中,考虑网络波动,服务宕机,程序异常因素,很有可能出现消息发送或者消费失败的问题.因此,消息的重试就是所有MQ中间件必须考虑到的一个关键点.如果没有消息重试,就可能产生消息丢失的问题,可能对系统产生很大的影响.所以,秉承宁可多发消息,也不可丢失消息的原则,大部分MQ都对消息重试提供了很好

  • Python__双划线参数代码实例解析

    这篇文章主要介绍了python__双划线参数代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 ''' >>> Class1.__doc__ # 类型帮助信息 'Class1 Doc.' >>> Class1.__name__ # 类型名称 'Class1' >>> Class1.__module__ # 类型所在模块 '__main__' >>> Class1._

  • Java 代码实例解析设计模式之监听者模式

    代码展示 Main:测试类 ObServer:每个被监听的对象实现该接口,重写该方法,完成自己的业务 public interface ObServer { /** * 当某一个被监控的对象发生变化时 * 所有实现该方法处理方法 */ void exceptionHandler(); } Subject:监听者容器 public interface Subject { /** * 添加被观察对象 */ void add(ObServer obServer); /** * 通知所有被观察者完成自己

随机推荐