`
阿尔萨斯
  • 浏览: 4330703 次
社区版块
存档分类
最新评论

STL vector中的pop_back方法(22)

 
阅读更多
public member function
<vector>

std::vector::pop_back

void pop_back();
Delete last element
Removes the last element in thevector, effectively reducing the containersizeby one.
可以高效地移除vector中的最后一个元素.

This destroys the removed element.

将销毁并移除该元素。

例子:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc,char **argv)
{
	vector<int> vi={10,20,30};
	cout<<"vi is :"<<endl;
	for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";});
	vi.pop_back();
	cout<<endl<<"after the pop_back():"<<endl;
	for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";});
	cout<<endl<<"try to access vi[2]="<<vi[2]<<endl;
	



}


结果截图:


果然又是逗我呢,还是没有销毁数据阿。



Parameters

none

Return value

none

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// vector::pop_back
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector;
  int sum (0);
  myvector.push_back (100);
  myvector.push_back (200);
  myvector.push_back (300);

  while (!myvector.empty())
  {
    sum+=myvector.back();
    myvector.pop_back();
  }

  std::cout << "The elements of myvector add up to " << sum << '\n';

  return 0;
}

In this example, the elements are popped out of thevectorafter they are added up in the sum. Output:
The elements of myvector add up to 600

Complexity

Constant.

Iterator validity

Theend iteratorand any iterator, pointer and reference referring to the removed element are invalidated.

通过end()获得的iterator以及其他指向被移除的元素的迭代器,指针,引用都将失效。

例子:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc,char **argv)
{
	vector<int> vi={10,20,30};
	cout<<"vi is :"<<endl;
	for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";});
	auto it=vi.end();
	int &ri=vi.back();
	int *p=&vi[2];
	cout<<endl<<"vi.end()="<<*it<<endl;
	cout<<"ri="<<ri<<endl;
	cout<<"*p="<<*p<<endl;
	vi.pop_back();
	cout<<endl<<"after the pop_back():"<<endl;
	for_each(vi.begin(),vi.end(),[](int i){cout<<i<<" ";});
	cout<<endl<<"try to access vi[2]="<<vi[2]<<endl<<endl;
	cout<<"vi.end()="<<*it<<endl;
	cout<<"ri="<<ri<<endl;
	cout<<"*p="<<*p<<endl;
	



}


其他的迭代器,指针以及引用,只要不是指向被移除的那个元素,都有效。


Data races

The container is modified.
The last element is modified. Concurrently accessing or modifying other elements is safe, although iterating ranges that include the removed element is not.

容器将被修改。

最后一个元素将被修改。访问以及修改其他元素都是安全的,但是不包括范围在被移除那个元素的例外。

Exception safety

If the container is notempty, the function never throws exceptions (no-throw guarantee).

Otherwise, it causesundefined behavior.

如果容器非空,不会抛出异常,否则,将会导致未知的错误。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(int argc,char **argv)
{
	vector<int> vi;
	cout<<"vi.pop_back()"<<endl;
	vi.pop_back();
	



}
在我这里似乎没有什么反应啊,难道真的是编译器问题?




//翻译的不好的地方请多多指导,可以在下面留言或者点击左上方邮件地址给我发邮件,指出我的错误以及不足,以便我修改,更好的分享给大家,谢谢。

转载请注明出处:http://blog.csdn.net/qq844352155

2014-8-16

于GDUT



分享到:
评论

相关推荐

    STL_中的常用的Vector_Map_Set_Sort用法

    ### C++ STL 中 Vector, Map, Set 和 Sort 的用法详解 #### 一、Vector (向量) **1. 声明** - `vector&lt;int&gt; a;` —— 声明一个元素类型为 `int` 的 `vector` 对象 `a`,初始时不含任何元素。 - `vector&lt;MyType&gt; a...

    vector1_STL_C++_vector_

    STL中的`vector`是其中一个核心容器,它允许程序员动态地存储、管理和操作一组同类型的元素。`vector`在功能上类似于动态数组,具有方便的内存管理以及高效的操作性能。 ### `vector`的基本概念 `vector`是一个...

    STL.rar_C++ STL_C++ STL_STL_STL c++_STL教程

    它的插入和删除操作在末尾(push_back和pop_back)具有很好的性能,但在中间进行操作时,可能需要移动大量元素,效率较低。 - **list**:list由双向链接节点组成,适合频繁的插入和删除操作,因为这些操作只需改变...

    C++ STL vector 容器介绍

    在STL中,`vector`是一种非常重要的容器,它是一个动态数组,允许在任意位置进行元素的插入和删除,并能保持元素的顺序。 `vector`容器的主要特点包括: 1. 动态数组:`vector`的底层实现是一个动态数组,这意味着...

    STL vector 知识详解

    其中,`vector`是STL中最常用的一种容器,它代表一个动态数组,可以方便地进行元素的添加、删除和访问。下面将详细介绍STL `vector` 的相关知识点。 1. **定义与特性** - `vector` 是一种序列容器,它的元素在内存...

    STL.rar_STL_stl queues

    `vector`提供了许多操作,如push_back()用于在末尾添加元素,pop_back()用于移除最后一个元素,以及at()和[]运算符用于访问特定位置的元素。此外,`vector`还可以通过迭代器遍历其所有元素,非常适合用来实现动态...

    STL_vector容器介绍

    ### STL_vector容器详细介绍 #### 一、概述 `std::vector`是C++标准模板库(Standard Template Library,简称STL)中一个非常重要的容器。它是一个动态数组,能够存储任意数量的相同类型元素,并自动处理内存管理...

    SGI STL vector相关源码

    - 插入元素的方法有`push_back()`、`insert()`等,删除有`pop_back()`、`erase()`等。源码中,这些操作都需要考虑如何维护元素顺序和更新容量。 7. **异常安全**: - SGI STL设计时考虑了异常安全,例如在内存...

    C++STL vector list map set dqueue 等应用举例及PPT讲解示例,代码演示

    在这个主题中,我们将深入探讨vector、list、map、set和deque这五个主要的STL容器,并通过具体的例子和PPT讲解来理解它们的应用。 1. **vector**:vector是动态数组,它可以方便地在任何位置插入和删除元素,但主要...

    vector list map pair stl 标准模板库 c++

    在这个主题中,我们将深入探讨四个关键的容器:vector、list、map以及pair,它们都是STL中的重要组成部分。 1. **vector**: - `vector`是一种动态数组,允许在任何位置插入和删除元素。它的元素是连续存储的,...

    STL_STL_

    - 使用vector存储动态数组,利用push_back()和pop_back()添加和删除元素。 - 利用list的迭代器遍历元素,执行特定操作,如修改每个元素的值。 - 使用set进行唯一元素的集合操作,例如查找某个元素是否已存在。 - ...

    example-of-use-vector.zip_vector

    在C++编程语言中,`std::vector`是标准模板库(STL)中的一种非常重要的容器,它提供了动态数组的功能。`vector`可以容纳任何类型的元素,并且可以在其生命周期内自由地添加或删除元素,这使得它在处理数据集合时非常...

    心希盼 c++ STL Vector

    2. **访问元素**:`std::vector`提供了`at()`、`[]`、`front()`和`back()`等方法来访问元素。 ```cpp int first_element = vec[0]; // 使用下标访问 int last_element = vec.back(); // 访问最后一个元素 ``` 3. **...

    《STL系列》之vector原理及实现

    `vector`是C++标准模板库(STL)中的一种容器,用于存储元素序列。`vector`的特点在于其内部实现采用动态数组的方式,因此提供了随机访问的能力,并且可以在序列的末尾高效地添加或删除元素。 #### 原理分析 #####...

    list_list_STL_C++_

    在C++编程语言中,标准模板库(Standard Template Library,STL)是不可或缺的一部分,它提供了许多高效的数据结构和算法。其中,`list`是一种序列容器,专门用于处理链表数据结构。本篇文章将深入探讨`list`容器的...

    vector链表实现,STL

    如果将节点变为数组,将会常熟优化。vector链表实现。...拥有iterator,begin,end,rbegin,rend,operator[],push_back,pop_back,push_front,pop_front,size等海量函数以及STL函数支持,也支持RE判断!

    vector操作vector操作vector操作

    在深入探讨STL(Standard Template Library)中的容器如`vector`、`list`与`deque`的操作之前,我们首先简要回顾一下这些容器的基本概念及其在C++编程环境中的重要性。`vector`、`list`和`deque`是STL中三种基本的...

    STL.rar_stl简单应用

    - 如何创建和使用vector,了解其动态增长的特性以及push_back()、pop_back()、insert()、erase()等方法。 - list容器的特性,比如它的迭代器不会因为插入和删除操作而失效,以及它的常数时间插入和删除。 - set和map...

    C语言下的vector

    5. **删除元素**:`vector_pop_back()`函数移除并释放`vector`的最后一个元素。`vector_erase()`可能用于移除指定位置的元素,并将后面的元素向前移动填充空缺。 6. **访问元素**:`vector_at()`函数根据索引返回`...

    STL 中的常用的Vector Map Set Sort用法

    `vector`提供了许多便利的方法,如`push_back()`用于在末尾添加元素,`pop_back()`移除最后一个元素,`insert()`插入元素到指定位置,`erase()`删除元素,以及`resize()`改变大小。此外,`vector`还可以通过下标操作...

Global site tag (gtag.js) - Google Analytics