C++笔记之vector的成员函数swap()和data()

C++笔记之vector的成员函数swap()和data()

标准C++中的std::vector类确实有swap()和data()这两个成员函数。下面是它们的简要描述:

  1. swap(): std::vector的swap()成员函数用于交换两个向量的内容,实现了高效的交换操作,不需要复制向量的元素。这对于在某些情况下高效地交换两个向量的内容非常有用。
cpp 复制代码
std::vector<T> v1, v2;
// 填充 v1 和 v2

v1.swap(v2); // 交换 v1 和 v2 的内容
  1. data(): std::vector的data()成员函数返回一个指向向量数据的指针。这个指针可以用于访问向量的元素。请注意,data()返回的指针是指向连续内存块的首地址,但要小心不要访问越界的元素。
cpp 复制代码
std::vector<T> v;
// 填充 v

T* ptr = v.data(); // 获取指向向量数据的指针

// 使用 ptr 访问向量的元素

请注意,这些函数是C++标准库的一部分,因此在标准C++中都是可用的。但是,不同版本的C++标准库可能会有一些差异,因此在使用时请查看您所使用的C++标准库版本的文档以确保正确使用这些函数。

示例1:使用swap()函数交换两个std::vector对象的内容

cpp 复制代码
#include <iostream>
#include <vector>

int main() {
    std::vector<int> v1 = {1, 2, 3};
    std::vector<int> v2 = {4, 5, 6};

    std::cout << "v1: ";
    for (int num : v1) {
        std::cout << num << " ";
    }
    std::cout << "\n";

    std::cout << "v2: ";
    for (int num : v2) {
        std::cout << num << " ";
    }
    std::cout << "\n";

    // 使用 swap() 交换 v1 和 v2 的内容
    v1.swap(v2);

    std::cout << "After swapping:\n";
    std::cout << "v1: ";
    for (int num : v1) {
        std::cout << num << " ";
    }
    std::cout << "\n";

    std::cout << "v2: ";
    for (int num : v2) {
        std::cout << num << " ";
    }
    std::cout << "\n";

    return 0;
}

运行

示例2:使用data()函数获取std::vector数据的指针

cpp 复制代码
#include <iostream>
#include <vector>

int main() {
    std::vector<double> v = {1.1, 2.2, 3.3, 4.4, 5.5};

    double* ptr = v.data();

    std::cout << "Elements in v using data(): ";
    for (std::size_t i = 0; i < v.size(); ++i) {
        std::cout << ptr[i] << " ";
    }
    std::cout << "\n";

    return 0;
}

运行

这两个程序分别演示了swap()和data()函数的用法,第一个程序交换了两个向量的内容,第二个程序使用data()函数获取向量数据的指针并访问向量的元素。

相关推荐
专注仿真1 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
Best-Wishes1 小时前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
代码不停2 小时前
自动化测试(java)
java·开发语言·selenium·自动化
滕州市燕猫虎计算机科技工作室个体工商户2 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
别动我齐刘海3 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
志尊宝3 小时前
Vue3 零基础每日笔记(082):文件上传实战——el-upload 校验、自定义上传、头像预览
前端·javascript·vue.js·笔记·#javascript·#vue.js
鬼手点金4 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
爱上网的小舟4 小时前
星际战士2启动错误怎么办?5种游戏报错解决方法
开发语言·php
后季暖4 小时前
电商问数笔记(2)
笔记
xier_ran5 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习