C++ vector 赋值、删除、排序类之外的其他函数

简介: C++ vector 赋值、删除、排序类之外的其他函数

move()

移动源容器的一段到目标容器的指定位置,源容器的元素并不改变。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
  vector<int> v1={1,2,3,4,5,6,7};
  vector<int> v2={-1,-2,-3,-4,-5};  
  cout<<"移动前:"<<endl;
  for(auto v:v1) cout<<v<<" "; cout<<endl;
  for(auto v:v2) cout<<v<<" "; cout<<endl;
  move(v2.begin()+1,v2.begin()+3,v1.begin()+4);  
  cout<<"移动后:"<<endl;
  for(auto v:v1) cout<<v<<" "; cout<<endl;
  for(auto v:v2) cout<<v<<" "; cout<<endl;
  return 0;
 }
/*运行结果:即把v2[1] v2[2](区间左开右闭不含v2[3])移动
             到v1[4]位置,覆盖相应个位置,v2不发生改变
移动前:
1 2 3 4 5 6 7
-1 -2 -3 -4 -5
移动后:
1 2 3 4 -2 -3 7
-1 -2 -3 -4 -5
--------------------------------
Process exited after 0.481 seconds with return value 0
请按任意键继续. . .
*/


flip()

对容器元素取反,仅适用于<bool>型容器。

vector<bool> bv={0,1,0x0,0x1,true,false};    //<bool>容器的元素只有0和1,有其他数则警告并强制转换。


swap(bv[i],bv[j])

交换索引号i,j二个元素的位置,也仅适用于<bool>型容器。

#include <iostream>
#include <vector>
#include <algorithm>
#include <bitset>
using namespace std;
int main(void)
{
  vector<bool> bv={0,1,0x0,0x1,true,false,1};
  for(auto v:bv) cout<<v<<" "; cout<<endl;
  bv.flip();
  for(auto v:bv) cout<<v<<" "; cout<<endl;
  bv.swap(bv.front(),bv.back());
  bv.swap(bv.at(2),bv.at(3));
  for(auto v:bv) cout<<v<<" "; cout<<endl;
  return 0;
 }
/*运行结果:第二行是取反的结果,第三行是交换了首和尾及bv[2]和bv[3]的结果
0 1 0 1 1 0 1
1 0 1 0 0 1 0
0 0 0 1 0 1 1
--------------------------------
Process exited after 0.481 seconds with return value 0
请按任意键继续. . .
*/


data()

返回指向容器第一个元素的指针。type_name *p=vect.dat();

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(void)
{
  vector<int> v1={1,2,3,4,5,6,7,8,9,0};
  vector<string> v2={"C","C++","Java","Python"};
  int *p=v1.data();
  for(auto v:v1) cout<<v<<" "; cout<<endl;
  for(auto v:v1) cout<<*p<<" "; cout<<endl; //未移动指针 
  for(auto v:v1) cout<<*p++<<" "; cout<<endl;
  string *p1=v2.data();
  for(auto v:v2) cout<<v<<" "; cout<<endl;
  for(auto v:v2) cout<<*p1++<<" "; cout<<endl;
  p1=v2.data(); ++p1;  //指针回0后+1 
  for(int i=1;i<v2.size();i++) cout<<*p1++<<" "; cout<<endl;
  return 0;
 }
/* 运算结果:
1 2 3 4 5 6 7 8 9 0
1 1 1 1 1 1 1 1 1 1
1 2 3 4 5 6 7 8 9 0
C C++ Java Python
C C++ Java Python
C++ Java Python
--------------------------------
Process exited after 0.7244 seconds with return value 0
请按任意键继续. . .
*/ 
目录
相关文章
|
22天前
|
C++
基本二叉树与排序二叉树(C++源码)
本程序实现二叉树基本操作与二叉排序树应用。支持前序建树、四种遍历、求深度、叶子数、第K层节点数及查找功能;并实现二叉排序树的构建、中序输出与查找比较次数统计,分析不同插入顺序对树形态和查找效率的影响。
|
4月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
112 0
|
4月前
|
存储 编译器 程序员
c++的类(附含explicit关键字,友元,内部类)
本文介绍了C++中类的核心概念与用法,涵盖封装、继承、多态三大特性。重点讲解了类的定义(`class`与`struct`)、访问限定符(`private`、`public`、`protected`)、类的作用域及成员函数的声明与定义分离。同时深入探讨了类的大小计算、`this`指针、默认成员函数(构造函数、析构函数、拷贝构造、赋值重载)以及运算符重载等内容。 文章还详细分析了`explicit`关键字的作用、静态成员(变量与函数)、友元(友元函数与友元类)的概念及其使用场景,并简要介绍了内部类的特性。
186 0
|
6月前
|
编译器 C++ 容器
【c++11】c++11新特性(上)(列表初始化、右值引用和移动语义、类的新默认成员函数、lambda表达式)
C++11为C++带来了革命性变化,引入了列表初始化、右值引用、移动语义、类的新默认成员函数和lambda表达式等特性。列表初始化统一了对象初始化方式,initializer_list简化了容器多元素初始化;右值引用和移动语义优化了资源管理,减少拷贝开销;类新增移动构造和移动赋值函数提升性能;lambda表达式提供匿名函数对象,增强代码简洁性和灵活性。这些特性共同推动了现代C++编程的发展,提升了开发效率与程序性能。
222 12
|
7月前
|
编译器 C++
类和对象(下)C++
本内容主要讲解C++中的初始化列表、类型转换、静态成员、友元、内部类、匿名对象及对象拷贝时的编译器优化。初始化列表用于成员变量定义初始化,尤其对引用、const及无默认构造函数的类类型变量至关重要。类型转换中,`explicit`可禁用隐式转换。静态成员属类而非对象,受访问限定符约束。内部类是独立类,可增强封装性。匿名对象生命周期短,常用于临时场景。编译器会优化对象拷贝以提高效率。最后,鼓励大家通过重复练习提升技能!
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
1198 1
|
Android开发 Python
Python封装ADB获取Android设备wifi地址的方法
Python封装ADB获取Android设备wifi地址的方法
332 0
|
1月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
320 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
7月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
387 0

热门文章

最新文章