#include <iostream>
#include <set>
#include <vector>
#include <list>
int main()
{
?// vector
?std::vector<int> myvector;
?// 一個(gè) vector 就像一個(gè)動(dòng)態(tài)的一維數(shù)組
?// 聲明一個(gè)存放 100 個(gè) 0 的整數(shù)的 vector
?std::vector<int> myvec(100, 0);
?
?// 返回 vector 的大小, 即元素的個(gè)數(shù)
?std::cout << myvec.size() << std::endl;
?
?// 刪除 vector 末尾的元素, vector 的大小相應(yīng)減1
?myvec.pop_back();
?// 在 vector 的末尾添加元素
?myvec.push_back(10);
?// 返回 vector 末尾的元素
?std::cout << myvec.back() << std::endl;
?// 清除 vector 所有元素, vector 的個(gè)數(shù)為 0
?myvec.clear();
?std::cout << myvec.size() << std::endl;
?
?// 訪問方式
?// std::cout << myvec[1] << std::endl;??? //這種方法訪問越界會(huì)異常
?// std::cout << myvec.at(5) << std::endl; //這種方法訪問越界會(huì)異常
?// 遍歷
?// 遍歷方法1, 推薦
?for(std::vector<int>::iterator iter_1 = myvec.begin(); iter_1 != myvec.end(); iter_1++)
??std::cout << (int)*iter_1 << std::endl;
?// 遍歷方法2, 不推薦, 原因忘記
?for(int i = 0; i <= myvec.size(); i++)
??std::cout << myvec[i] << std::endl;
?
?// set
?// set 是集合, 但 set中不能包含重復(fù)的元素, 這是與 vector 的區(qū)別
?std::set<int> myset;
?myset.insert(10); // 插入元素
?myset.insert(10); // 沒用, 插入失敗, 因?yàn)椴荒苡兄貜?fù)元素
?myset.erase(10);? // 刪除元素,如果元素存在的話
?myset.size();
?myset.clear();
?
?// list 相當(dāng)于一個(gè)列表
?std::list<int> mylist;
?mylist.push_back(100);
?mylist.remove(100);
?/*
? *?? vector用的是隨機(jī)存取迭代器,list用的是雙向迭代器
? *??
? *?? 如果我們需要隨機(jī)訪問一個(gè)容器則vector?? 要比list?? 好得多??
???? *?? 如果我們已知要存儲(chǔ)元素的個(gè)數(shù)則vector?? 又是一個(gè)比list?? 好的選擇??
???? *?? 如果我們需要的不只是在容器兩端插入和刪除元素則list?? 顯然要比vector?? 好??
???? *?? 除非我們需要在容器首部插入和刪除元素否則vector?? 要比deque?? 好
? */
?return 0;
}