string.pop_back()函数详解
时间: 2024-02-05 15:03:47 浏览: 51
`pop_back()` 函数是 C++ STL 中的 string 类的一个成员函数,用于删除 string 中的最后一个字符并将其从 string 中移除。
函数原型如下:
```c++
void pop_back();
```
使用示例:
```c++
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, world!";
std::cout << "Before pop_back(): " << str << '\n';
str.pop_back();
std::cout << "After pop_back(): " << str << '\n';
return 0;
}
```
输出结果:
```
Before pop_back(): Hello, world!
After pop_back(): Hello, world
```
可以看到,`pop_back()` 函数删除了字符串中的最后一个字符 `!`。需要注意的是,如果字符串为空,调用 `pop_back()` 函数会导致未定义的行为。因此,在调用 `pop_back()` 之前,最好使用 `empty()` 函数检查字符串是否为空。
相关问题
string.pop_back源码
string.pop_back() 函数用于从字符串的末尾删除一个字符。
以下是 C++ 中 string.pop_back() 函数的源代码实现:
```cpp
void pop_back()
{
if (!empty())
erase(size() - 1);
}
```
该函数首先检查字符串是否为空。如果不为空,则调用 erase() 函数删除字符串中的最后一个字符,使用的是 size() 函数获取字符串的长度减去 1 的位置。
注意,该函数只能用于 C++11 及以上版本。在 C++11 之前的版本中,该函数不存在。
.emplace_back函数意思
`.emplace_back` 是 C++ 中的 STL 容器 `vector` 的一个成员函数,用于在 vector 的末尾添加一个元素。与 `push_back` 不同的是,`emplace_back` 可以直接在 vector 内部构造一个元素,而不需要创建一个临时对象,然后再将其复制或移动到 vector 中。这种直接在 vector 中构造元素的方式,可以避免一些不必要的开销,提高程序的效率。例如:
```c++
std::vector<int> vec;
vec.emplace_back(1); // 直接在 vector 中构造一个 int 类型的元素,值为 1
```
需要注意的是,使用 `emplace_back` 添加元素时,需要提供对应类型的构造函数所需的参数。例如:
```c++
struct Person {
std::string name;
int age;
Person(std::string n, int a) : name(n), age(a) {}
};
std::vector<Person> people;
people.emplace_back("Alice", 20); // 直接在 vector 中构造一个 Person 类型的元素,名字为 Alice,年龄为 20
```