OJ的自我修养:C++内置数据结构的应用

1. 内置基本数据结构

1.1 动态数组(vector)

#include
#include

using namespace std;

int main()
{
  const unsigned int INIT_SIZE = 5;
  vector vc(INIT_SIZE,0);//定义一个大小为5的vector,并初始化为0
  for(unsigned int i=0;i::iterator it;
  for(it=vc.begin();it!=vc.end();it++){
    cout<<*it<<" ";
  }
  return 0;
}

1.2. 链表(list)

#include
#include

using namespace std;

// 在第m个元素后插入
void indexInsert(list &l, int m, int num)
{
    auto iter = l.begin();
    for (int i = 0; i < m; i++) {
        iter++;
    }
    l.insert(iter, num);
}
// 删除第m个元素
void indexDelete(list &l, int m)
{
    if(!l.empty()){
        auto iter = l.begin();
        for (int i = 0; i < m - 1; i++) {
            iter++;
        }
        l.erase(iter);
    }
}

int main()
{
  listl1;
  listl2(2,0);

  l1.push_back(1);//尾部插入
  l1.push_front(2);//头部插入
  l1.pop_back();//尾部弹出
  l2.pop_front();//头部弹出

  cout<::iterator it;
  for(it = l1.begin();it!=l1.end();it++){
    cout<<*it<<" ";
  }
  cout<

1.3. 队列(queue)

#include
#include

using namespace std;

int main()
{
  queue q;
  if(q.empty()) q.push(1);
  if(!q.empty())q.pop();//弹出队头元素
  else q.push(2);//此处不会被执行
  cout<

1.4. 栈(stack)

#include
#include

using namespace std;

int main()
{
  stack s;
  if(s.empty()) s.push(1);
  if(!s.empty())s.pop();//弹出队头元素, 注意没有返回值,只是单独弹出
  else s.push(2);//此处不会被执行
  cout<

1.5. 映射(map)

#include
#include

using namespace std;

int main()
{
  map mapStudent;//定义一个map对象
  /*如果key存在则插入失败*/
  mapStudent.insert(pair(000,"student_zero"));//map插入键值对
  mapStudent.insert(map::value_type(001,"student_first"));//
  /*用数组的方式插入可以覆盖key*/
  mapStudent[001] = "student_first_plus";

  cout<::iterator it;
  it = mapStudent.find(000);//返回的是一个迭代器
  cout<first<second<first是键,it->second是值
  mapStudent.erase(it);//用迭代器进行删除
  int n = mapStudent.erase(001);//直接通过key进行删除,成功返回1,否则返回0
  cout<

1.6. 集合(set)

#include
#include

using namespace std;

int main()
{
  set s;
  for(unsigned i=0;i<5;i++){
    s.insert(i);
  }

   set::iterator it;
   //通过迭代器遍历集合
   for(it=s.begin();it!=s.end();++it){
    cout<<*it<

2. 参考资料

[1] C++ vector用法(详解!!函数,实现)

[2] C++中list用法详解

[3] C++ 标准模板库STL 队列 queue 使用方法与应用介绍

[4] c++ stl栈容器stack用法介绍

[5] C++ map用法总结(整理)

[6] C++中set用法详解

你可能感兴趣的:(C/C++)