C++ vector笔记

原创 2016年08月30日 10:16:29

vector是C++标准模板库中的内容,它是一个容器,简单地说,就是一个能够存放任意类型的动态数组,可以动态改变大小。

1、包含头文件#include<vector>


2、变量声明:vector<int>vec(100);  代表vec可以存放100个int类型的数据,于是,它可以像普通数组一样访问

       ps 二维数组:vector <int*>vec;


3、迭代器类型:vector容器类的迭代器类型为一个名为iterator的typedef,其作用域为整个类,其行为可以看成是指针。

    例如:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int>::iterator it;
	vector<int>vec(6);
	for(int i=0;i<6;i++)
	{
		int a;
		cin>>a;
		vec.push_back(a);//cin>>vec[i];
	}
	for(it=vec.begin();it!=vec.end();it++)
	{
		*it=2; //使用 * 访问迭代器所指向的元素
	}
	for(int i=0;i<6;i++)
		cout<<vec[i]<<' ';
	return 0;
}

这串代码实现了数据的输入、修改与输出。


3、一些基本操作

push_back(a)     

通过上述代码我们也可以知道,该方法的作用是将元素添加到矢量尾,在编写程序时,无需了解元素的数目,只要能够取得足够的内存,程序就可以根据需要增加vec的长度。
erase(a)   

删除a位置的数据,也可以接受两个迭代器参数,定义要删除的区间。例如:

     vec.erase(vec.begin(),vec.end())即为删除[begin,end)区间(注意左闭右开)。也可以使用两个迭代器表示。

Insert(pos,elem)

可以在pos位置插入elem。该方法也接受三个迭代器参数,第一个指定新元素的插入位置(前面),第二、三个定义了被插入区间

   例如:

vector<int>old_v;
vector<int>new_v;
...
old_v.insert(old_v.end(),new_v.begin()+1,new_v.end());
该代码将新元素插入到old.end()前面,即矢量最后一个元素的后面。

可以在容器中装入自定义的数据类型

例如定义一个class Myclass{}后;我们就可以定义一个存放class 的容器vetor<Myclass>vec;

定义容器时可以赋初值:vector<int>vec(100,0)即定义了一个容量为100的容器,并赋初值0。并且,我们可以把一个容器的对象赋值给另一个容器: vec2 = vec;

clear() 

移除容器中所有数据

empty()   

判断容器是否为空

front()   

传回第一个数据

pop_back()  

删除最后一个数据

resize(num)  

重新设置该容器的大小

begin() 

返回容器中第一个元素的迭代器,end()同理

size()  

返回容器中的数据个数

下面是一个例子便于我们理解上述方法的用法

#include <iostream>
#include <string>
#include <vector>
using namespace std; 

struct Review {
    string title;
    int rating;
}temp;

bool FillReview(Review & rr)
{
    cout << "Enter book title ('quit' to quit): ";
    getline(cin,rr.title);
    if (rr.title == "quit")
        return false;
    cout << "Enter book rating: ";
    cin >> rr.rating;
    if (!cin)
        return false;
    // get rid of rest of input line
    while (cin.get() != '\n')
        continue;
    return true;
}

void ShowReview(const Review & rr)
{
    cout << rr.rating << "\t" << rr.title << endl; 
}

int main()
{
    vector<Review> books;
    while (FillReview(temp))
        books.push_back(temp);
    int num = books.size();
    if (num > 0)
    {
        cout << "Thank you. You entered the following:\n"
            << "Rating\tBook\n";
        for (int i = 0; i < num; i++)
            ShowReview(books[i]);
        cout << "Reprising:\n"
            << "Rating\tBook\n";
        vector<Review>::iterator pr;
        for (pr = books.begin(); pr != books.end(); pr++)
            ShowReview(*pr);
        vector <Review> oldlist(books);     // copy constructor used
        if (num > 3)
        {
            // remove 2 items
            books.erase(books.begin() + 1, books.begin() + 3);
            cout << "After erasure:\n";
            for (pr = books.begin(); pr != books.end(); pr++)
                ShowReview(*pr);
            // insert 1 item
            books.insert(books.begin(), oldlist.begin() + 1,
                        oldlist.begin() + 2);
            cout << "After insertion:\n";
            for (pr = books.begin(); pr != books.end(); pr++)
                ShowReview(*pr);
        }
        books.swap(oldlist);
        cout << "Swapping oldlist with books:\n";
        for (pr = books.begin(); pr != books.end(); pr++)
            ShowReview(*pr);
    }
    else
        cout << "Nothing entered, nothing gained.\n";
    // cin.get();
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++ vector 类学习笔记

vector容器类型   vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。vector的构造...

C++ Primer 学习笔记——第3章:标准库类型 vector

第3章:标准库类型 vector
  • eminia
  • eminia
  • 2011年07月30日 23:31
  • 621

c++ primer学习笔记3-标准库类型string&vector

1.string 与getline
  • wm_1991
  • wm_1991
  • 2014年11月05日 10:11
  • 345

c++ vector使用笔记

vector使用 1.有关vector容量的函数 size Return size (public member function ) max_size Return maximum size (pu...

《C++ Primer》读书笔记-第三章 03 标准库类型vector

作者:马志峰 链接:https://zhuanlan.zhihu.com/p/23498837 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 声明: ...

C++ Primer笔记1_转义字符_标准库类型string_标准库类型vector

1.转义字符: \x后紧跟1个或多个十六进制数字、或\后紧跟1、2、3个八进制数字,其中数字部分是字符对应的数值。 #include using namespace std; int main(...

《c++ primer》学习笔记 第三章 标准库类型(string, vector,bitset)

《c++ primer》学习笔记 第三章 标准库类型(string, vector,bitset) 1 String类 (1)关于getline()函数 Getline()有两个原型: (1)...

C++(笔记)容器(vector)作为函数参数如何传参

一、大致以下类型 void 函数名( vector< int> obj ); void 函数名( vector< int>* pobj ); void 函数名( const ve...
  • w_linux
  • w_linux
  • 2017年05月17日 17:51
  • 2585

C++ Data Structure 学习笔记 (2011.5.3)——传值,指针,引用的区别及Vector与String的详细用法

今天学的第一个内容是传值,传引用的问题。在Mark Weiss的书中,他非常简明扼要的对此作了说明:Call by reference is required for objects that may...

c++ primer(第五版)笔记 第三章(2)vector 库初探

#include #include #include using std::string; using std::vector; using std::cout; using std:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ vector笔记
举报原因:
原因补充:

(最多只允许输入30个字)