by 洪翠憶
#include <vector>
⋮
std::vector<型態> 名稱 (初始內容[選填]);
//宣告範例
std::vector<int> emp; //宣告一個可儲存int的空的向量
std::vector<int> fs (5, 7); //裡面放了5個7的向量
std::vector<int> itfs (fs.begin(), fs.end()-1); //少了1個7的fs
std::vector<int> cofs (fs); //內容是fs
#include <iostream>
#include <vector>
int main(){
std::vector<char> say;
say.push_back('h');
say.push_back('i');
say.push_back('!');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.erase(say.begin()+1, say.begin()+2);
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.insert(say.begin()+1, 'e');
say.insert(say.begin()+2, 'y');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
#include <iostream>
#include <vector>
int main(){
std::vector<char> say;
say.push_back('h');
say.push_back('i');
say.push_back('!');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.erase(say.begin()+1, say.begin()+2);
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.insert(say.begin()+1, 'e');
say.insert(say.begin()+2, 'y');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
#include <iostream>
#include <vector>
int main(){
std::vector<char> say;
say.push_back('h');
say.push_back('i');
say.push_back('!');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.erase(say.begin()+1, say.begin()+2);
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.insert(say.begin()+1, 'e');
say.insert(say.begin()+2, 'y');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
向量[索引值]
//回傳該索引值所指向的值(跟陣列的用法一樣)
向量.at(索引值) //同上
向量.front() //回傳第一個值
向量.back() //回傳最後一個值
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi!";
std::vector<char> say (hi, hi+3);
std::cout << say[1] << ' ';
std::cout << say.at(1) << ' ';
std::cout << say.front() << ' ';
std::cout << say.back() << ' ';
return 0;
}
//i i h !
#include <iostream>
#include <vector>
int main(){
std::vector<char> say;
say.assign(3, '~');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
char hi[] = "hi";
say.assign(hi, hi+2);
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
/*
~~~
hi
*/
向量.assign(數量, 值);
//初始化向量,在向量中放入指定數量的值
向量.assign(其他容器迭代器的頭, 其他容器迭代器的尾)
//將其他容器的指定區域的值成為此向量的初始值
#include <iostream>
#include <vector>
int main(){
std::vector<char> say;
say.push_back('h');
say.push_back('i');
say.push_back('!');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
//hi!
向量.push_back(值); //新增值至最後一項
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi!";
std::vector<char> say (hi, hi+3);
say.pop_back();
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
//hi
向量.pop_back(); //刪除最後一個值
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi";
std::vector<char> say (hi, hi+2);
say.insert(say.end(), 'j');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.insert(say.begin(), 2, 'g');
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
/*
hij
gghij
*/
向量.insert(迭代器, 數量[選填], 值);
//在指定位置(迭代器)中,插入指定數量的值
#include <iostream>
#include <vector>
int main(){
char hi[] = "gghij";
std::vector<char> say (hi, hi+5);
say.erase(say.end()-1);
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
say.erase(say.begin()+2, say.end());
for(int i = 0, sayS = say.size(); i < sayS; i++)
std::cout << say[i];
std::cout << '\n';
return 0;
}
/*
gghi
gg
*/
向量.erase(迭代器的頭, 迭代器的尾[選填]);
//刪除迭代器選中的值
#include <iostream>
#include <vector>
int main(){
std::vector<int> a (3, 1);
std::vector<int> b (5, 1);
std::cout << a.size() << ' ' << b.size() << '\n';
a.swap(b);
std::cout << a.size() << ' ' << b.size() << '\n';
return 0;
}
/*
3 5
5 3
*/
向量1.swap(向量2); //交換向量1、向量2的內容
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi!";
std::vector<char> say (hi, hi+3);
say.clear();
std::cout << say.size() << '\n';
return 0;
}
//0
向量.clear(); //清空向量
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi!";
std::vector<char> say (hi, hi+3);
std::cout << say.size() << '\n';
return 0;
}
//3
向量.size() //回傳向量的長度
#include <iostream>
#include <vector>
int main(){
std::vector<char> say;
std::cout << say.empty() << ' ';
char hi[] = "hi!";
say.assign(hi, hi+3);
std::cout << say.empty() << ' ';
return 0;
}
//1 0
向量.empty() //如果向量是空的,回傳true
vec_s.begin()
vec_s.end()
vec_s.rbegin()
vec_s.rend()
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi!";
std::vector<char> say (hi, hi+3);
std::vector<char> s (say.begin(), say.end());
std::vector<char> rs (say.rbegin(), say.rend());
for(int i = 0, sayS = s.size(); i < sayS; i++)
std::cout << s[i];
std::cout << '\n';
for(int i = 0, sayS = rs.size(); i < sayS; i++)
std::cout << rs[i];
std::cout << '\n';
return 0;
}
/*
hi!
!ih
*/
#include <vector>
⋮
std::vector<型態>::iterator 名稱 = 值;
//宣告範例
std::vector<char> say (3, 'h');
std::vector<char>::iterator it = say.begin();
auto ite = say.begin();
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi!";
std::vector<char> say (hi, hi+3);
for(std::vector<char>::iterator i = say.begin(); i != say.end(); i++)
std::cout << *i;
std::cout << '\n';
return 0;
}
//hi!
#include <iostream>
#include <vector>
int main(){
std::vector<int> fs (5, 7);
std::vector<int> itfs (fs.begin(), fs.end());
std::vector<int> cofs (fs);
std::cout << fs.size() << ' ';
std::cout << itfs.size() << ' ';
std::cout << cofs.size() << ' ';
fs.pop_back();
std::cout << fs.size() << ' ';
std::cout << itfs.size() << ' ';
std::cout << cofs.size() << ' ';
return 0;
}
//5 5 5 4 5 5
VS
std::vector<int> itfs (fs.begin(), fs.end());
std::vector<int> cofs (fs);
#include <iostream>
#include <vector>
int main(){
char hi[] = "hi!";
std::vector<char> say (hi, hi+3);
std::cout << say[3] << '\n';
std::cout << say.at(3) << '\n';
return 0;
}