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()函数获取向量数据的指针并访问向量的元素。

相关推荐
m_Molly9 分钟前
C++源代码封装成dll动态链接库,并在WPF项目中使用的步骤说明
笔记
卑微的Coder19 分钟前
python画正方形、平行四边形、六边形、五角星、风车(四个半圆)
开发语言·python
bugtraq202121 分钟前
Fyne ( go跨平台GUI )中文文档-绘图和动画(三)
开发语言·后端·golang
L_cl1 小时前
数据结构与算法——Java实现 7.习题——反转链表
java·开发语言·链表
原机小子1 小时前
嵌入式系统开发利器:深入解析MATLAB嵌入式系统工具箱
开发语言·matlab·fpga开发
我明天再来学Web渗透1 小时前
【java面经】微服务架构速记
java·开发语言·微服务·云原生·架构
唤醒手腕1 小时前
2024年最新 Python 大数据网络爬虫技术基础案例详细教程(更新中)
开发语言·爬虫·python
秦淮渔火1 小时前
单例模式(饿汉式-懒汉式)
java·开发语言·单例模式
蔚一1 小时前
Java设计模式(单例模式)——单例模式存在的问题(完整详解,附有代码+案例)
java·开发语言·单例模式·设计模式
zhangbin_2371 小时前
【Python机器学习】NLP信息提取——正则模式
开发语言·人工智能·python·深度学习·机器学习·自然语言处理