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

相关推荐
权泽谦13 分钟前
从零搭建一个 PHP 登录注册系统(含完整源码)
android·开发语言·php
PieroPc19 分钟前
用python Streamlit 做个RapidOCR 文本识别系统
开发语言·python·ocr
卡提西亚25 分钟前
一本通网站1125题:矩阵乘法
c++·算法·矩阵·编程题·一本通
暖木生晖29 分钟前
Javascript函数之匿名函数以及立即执行函数的使用方法?
开发语言·javascript·ecmascript
say_fall38 分钟前
C语言容易被忽略的易错点(2)
c语言·开发语言
syker1 小时前
NEWBASIC 2.06.7 API 帮助与用户使用手册
开发语言·人工智能·机器学习·自动化
Js_cold1 小时前
Verilog运算符
开发语言·fpga开发·verilog
努力还债的学术吗喽1 小时前
【项目】pyqt5基于python的照片整蛊项目
开发语言·python·qt
m0_569531011 小时前
shell(4)--shell脚本中的循环:(if循环,for,while,until)和退出循环(continue,break, exit)
开发语言
下午见。1 小时前
深入理解C语言共用体/联合体(union):大小计算与大小端判断实战
c语言·笔记·学习