STL--项目中Pair 与 vector 的应用

简介:最近项目使用了一下STL,发现有些忘记,复习一下

头文件必须添加:

#include <vector>
using namespace std; 

定义一个vector

//保存编辑过外观的行列
    typedef vector<pair<int,int> >vecItem;
    vecItem vp;
void CDlgAutoTestReport::OnCloseUp()
{
    CString ComSelItem;
    m_comBox.GetLBText(m_comBox.GetCurSel(), ComSelItem);

    if (ComSelItem.CompareNoCase(_T("不合格")) == 0)
    {   
        vp.push_back(make_pair(e_Item,e_SubItem));
    }

    //。。。。。。。。。
}

应用根据iterator

void CDlgAutoTestReport::OnBnClickedBtnupdatereport()
{
    // TODO: Add your control notification handler code here
    vecItem::iterator it;
    for(it=vp.begin(); it!=vp.end(); it++)
    {
        CString strtemp;
        strtemp.Format(_T("%d---%d"),it->first,it->second);
        AfxMessageBox(strtemp);
    }
}

常用函数

vec.begin()//指向迭代器中第一个元素。   
vec.end()//指向迭代器中末端元素的下一个,指向一个不存在元素。          
vec.push_back(elem)     //在尾部加入一个数据。  
vec.pop_back()          //删除最后一个数据。  
vec.capacity()  //vector可用空间的大小。  
vec.size()//返回容器中数据个数。  
vec.empty() //判断容器是否为空。  
vec.front()     //传回第一个数据。  
vec.back()  //传回最后一个数据,不检查这个数据是否存在。  
vec.at(index)   //传回索引index所指的数据,如果index越界,抛out_of_range。  
vec.clear() //移除容器中所有数据。  
vec.erase(iterator) //删除iterator位置的数据,传回下一个数据的位置。  
vec.erase(begin,end)    //删除[begin,end)区间的数据,传回下一个数据的位置。注意:begin和end为iterator  
vec.insert(position,elem)   //在position位置插入一个elem拷贝,传回新数据位置。  
vec.insert(position,n,elem) //在position位置插入n个elem数据,无返回值。  
vec.insert(position,begin,end)  //在position位置插入在[begin,end)区间的数据,无返回值。  

猜你喜欢

转载自blog.csdn.net/yifanmoon/article/details/80701890