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

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

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

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

v1.swap(v2); // 交换 v1 和 v2 的内容
  1. data(): std::vectordata()成员函数返回一个指向向量数据的指针。这个指针可以用于访问向量的元素。请注意,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()函数获取向量数据的指针并访问向量的元素。

相关推荐
weixin_472339462 小时前
高效处理大体积Excel文件的Java技术方案解析
java·开发语言·excel
枯萎穿心攻击2 小时前
响应式编程入门教程第二节:构建 ObservableProperty<T> — 封装 ReactiveProperty 的高级用法
开发语言·unity·c#·游戏引擎
DKPT3 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
Eiceblue4 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
tan180°4 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
m0_555762904 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
巴伦是只猫5 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
浪裡遊5 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
彭祥.6 小时前
Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
c++·opencv·分类
lzb_kkk6 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节