#include <iostream>
#include <set>
#include <vector>
#include <list>
int main()
{
?// vector
?std::vector<int> myvector;
?// 一個 vector 就像一個動態的一維數組
?// 聲明一個存放 100 個 0 的整數的 vector
?std::vector<int> myvec(100, 0);
?
?// 返回 vector 的大小, 即元素的個數
?std::cout << myvec.size() << std::endl;
?
?// 刪除 vector 末尾的元素, vector 的大小相應減1
?myvec.pop_back();
?// 在 vector 的末尾添加元素
?myvec.push_back(10);
?// 返回 vector 末尾的元素
?std::cout << myvec.back() << std::endl;
?// 清除 vector 所有元素, vector 的個數為 0
?myvec.clear();
?std::cout << myvec.size() << std::endl;
?
?// 訪問方式
?// std::cout << myvec[1] << std::endl;??? //這種方法訪問越界會異常
?// std::cout << myvec.at(5) << std::endl; //這種方法訪問越界會異常
?// 遍歷
?// 遍歷方法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中不能包含重復的元素, 這是與 vector 的區別
?std::set<int> myset;
?myset.insert(10); // 插入元素
?myset.insert(10); // 沒用, 插入失敗, 因為不能有重復元素
?myset.erase(10);? // 刪除元素,如果元素存在的話
?myset.size();
?myset.clear();
?
?// list 相當于一個列表
?std::list<int> mylist;
?mylist.push_back(100);
?mylist.remove(100);
?/*
? *?? vector用的是隨機存取迭代器,list用的是雙向迭代器
? *??
? *?? 如果我們需要隨機訪問一個容器則vector?? 要比list?? 好得多??
???? *?? 如果我們已知要存儲元素的個數則vector?? 又是一個比list?? 好的選擇??
???? *?? 如果我們需要的不只是在容器兩端插入和刪除元素則list?? 顯然要比vector?? 好??
???? *?? 除非我們需要在容器首部插入和刪除元素否則vector?? 要比deque?? 好
? */
?return 0;
}