C++字符串

23 阅读4分钟

C++中字符串主要为两种

  • C 风格字符串
  • C++ 引入的 string 类类型

C++ 中有大量的函数用来操作以 null 结尾的字符串:

image.png

C++指针

每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。

指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:

image.png

image.png

C++引用和指针的区别

  • 不存在空引用,引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。
  • 引用的对象必须是一个变量,而指针必须是一个地址。

image.png

重点关注

image.png

C++ vector 容器

C++ 中的 vector 是一种序列容器,它允许你在运行时动态地插入和删除元素。

vector 是基于数组的数据结构,但它可以自动管理内存,这意味着你不需要手动分配和释放内存。

与 C++ 数组相比,vector 具有更多的灵活性和功能,使其成为 C++ 中常用的数据结构之一。

vector 是 C++ 标准模板库(STL)的一部分,提供了灵活的接口和高效的操作。

基本特性:

  • 动态大小vector 的大小可以根据需要自动增长和缩小。
  • 连续存储vector 中的元素在内存中是连续存储的,这使得访问元素非常快速。
  • 可迭代vector 可以被迭代,你可以使用循环(如 for 循环)来访问它的元素。
  • 元素类型vector 可以存储任何类型的元素,包括内置类型、对象、指针等。

使用场景:

  • 当你需要一个可以动态增长和缩小的数组时。
  • 当你需要频繁地在序列的末尾添加或移除元素时。
  • 当你需要一个可以高效随机访问元素的容器时。

使用vector首先必须要有头文件 头文件定义如下: #include 创建容器 std::vector myVector; // 创建一个存储整数的空 vector 另外在创建的时候可以初始化容器的大小和初始值

这将创建一个空的整数向量,也可以在创建时指定初始大小和初始值:

std::vector<int> myVector(5); // 创建一个包含 5 个整数的 vector,每个值都为默认
std::vector<int> myVector(5, 10); // 创建一个包含 5 个整数的 vector,每个值都为 10

下面的表达式有着相同的效果

std::vector<int> vec; // 默认初始化一个空的 vector
std::vector<int> vec2 = {1, 2, 3, 4}; // 初始化一个包含元素的 vector

可以使用 push_back 方法向 vector 中添加元素:
myVector.push_back(7); // 将整数 7 添加到 vector 的末尾

访问元素

可以使用下标操作符 [] 或 at() 方法访问 vector 中的元素:

int x = myVector[0]; // 获取第一个元素
int y = myVector.at(1); // 获取第二个元素

获取大小

可以使用 size() 方法获取 vector 中元素的数量:

int size = myVector.size(); // 获取 vector 中的元素数量

迭代访问

可以使用迭代器遍历 vector 中的元素:

for (auto it = myVector.begin(); it != myVector.end(); ++it) {
    std::cout << *it << " ";
}

或者使用范围循环:

for (int element : myVector) {
    std::cout << element << " ";
}

删除元素

可以使用 erase() 方法删除 vector 中的元素:

myVector.erase(myVector.begin() + 2); // 删除第三个元素

清空 Vector

可以使用 clear() 方法清空 vector 中的所有元素:

myVector.clear(); // 清空 vector

具体的实际例子 #include #include

int main() { // 创建一个空的整数向量 std::vector myVector;

// 添加元素到向量中
myVector.push_back(3);
myVector.push_back(7);
myVector.push_back(11);
myVector.push_back(5);

// 访问向量中的元素并输出
std::cout << "Elements in the vector: ";
for (int element : myVector) {
    std::cout << element << " ";
}
std::cout << std::endl;

// 访问向量中的第一个元素并输出
std::cout << "First element: " << myVector[0] << std::endl;

// 访问向量中的第二个元素并输出
std::cout << "Second element: " << myVector.at(1) << std::endl;

// 获取向量的大小并输出
std::cout << "Size of the vector: " << myVector.size() << std::endl;

// 删除向量中的第三个元素
myVector.erase(myVector.begin() + 2);

// 输出删除元素后的向量
std::cout << "Elements in the vector after erasing: ";
for (int element : myVector) {
    std::cout << element << " ";
}
std::cout << std::endl;

// 清空向量并输出
myVector.clear();
std::cout << "Size of the vector after clearing: " << myVector.size() << std::endl;

return 0;

}