C++笔记之vector的成员函数swap()和data()
标准C++中的std::vector
类确实有swap()
和data()
这两个成员函数。下面是它们的简要描述:
swap()
:std::vector
的swap()
成员函数用于交换两个向量的内容,实现了高效的交换操作,不需要复制向量的元素。这对于在某些情况下高效地交换两个向量的内容非常有用。
std::vector<T> v1, v2;
// 填充 v1 和 v2
v1.swap(v2); // 交换 v1 和 v2 的内容
data()
:std::vector
的data()
成员函数返回一个指向向量数据的指针。这个指针可以用于访问向量的元素。请注意,data()
返回的指针是指向连续内存块的首地址,但要小心不要访问越界的元素。
std::vector<T> v;
// 填充 v
T* ptr = v.data(); // 获取指向向量数据的指针
// 使用 ptr 访问向量的元素
请注意,这些函数是C++标准库的一部分,因此在标准C++中都是可用的。但是,不同版本的C++标准库可能会有一些差异,因此在使用时请查看您所使用的C++标准库版本的文档以确保正确使用这些函数。
示例1:使用swap()
函数交换两个std::vector
对象的内容
#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
数据的指针
#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()
函数获取向量数据的指针并访问向量的元素。