Vector用法
1.构造
//****vector构造方式 vectorv1; vector v2(5); vector v3(5, 0); //****通过字符串构造 string str[] = {"ZhangSan","LiSi","WangWu"}; vector V1(str, str + 3); vector ::iterator iter0 = V1.begin(); while (iter0 != V1.end()) { cout << *iter0++ <<" "; } cout << endl; //****拷贝构造 vector V2(V1); for (int i = 0; i < 3; i++) { cout << V2[i] << " "; } cout << endl;
2.assign
int array[] = { 1,2,3,4,5 };
vector v1;
v1.assign(array, array + 5);
copy(v1.begin(), v1.end(), ostream_iterator(cout, " "));
cout << endl;
v1.assign(3, 50);
copy(v1.begin(), v1.end(), ostream_iterator(cout, " "));
cout << endl;
输出
3.at
vectorv1(3,0); v1[0] = 100; v1.at(1) = 200; copy(v1.begin(), v1.end(), ostream_iterator (cout, " ")); cout << endl; for (int i = 0; i < 3; i++) { cout << v1.at(i)<<" "; }
4.push_back&back&front
templateclass Member { public: Member(T t, D d) :name(t), sal(d) {} void print(); private: T name; D sal; }; template void Member ::print() { cout << name << " " << sal << endl; } int main() { typedef Member M; vector v; v.push_back(M("A",4.6)); v.push_back(M("B", 4.8)); vector ::iterator iter = v.begin(); while (iter != v.end()) { (iter++)->print(); } //back v.back().print(); //front v.front().print(); return 0; }
5.insert&pop_back
int array[5]; //fill(array, array + 5, 1); iota(array, array + 5, 1); vectorv; copy(array, array + 5, back_inserter(v)); Print print; for_each(v.begin(), v.end(), print); cout << endl; vector ::iterator iter; iter = v.begin(); v.insert(iter, 5); for_each(v.begin(), v.end(), print); cout << endl; iter = v.begin() + 5; v.insert(iter, array + 2, array + 5); for_each(v.begin(), v.end(), print); cout << endl; //pop_back v.pop_back(); for_each(v.begin(), v.end(), print);
6.rbegin&rend&sort
class ID
{
public:
ID(string name, int score) :name(name), score(score) {}
friend bool operator <(const ID& id1, const ID&id2);
void display()
{
cout << name << " " << score << endl;
}
private:
string name;
int score;
};
bool operator <(const ID& id1, const ID&id2)
{
return id1.score < id2.score;
}
typedef vector MyVector;
int main()
{
MyVector vec;
vec.push_back(ID("A", 500));
vec.push_back(ID("B", 300));
vec.push_back(ID("C", 400));
MyVector::iterator iter;
for (iter = vec.begin(); iter != vec.end(); iter++) {
iter->display();
}
cout << "排序后:" << endl;
sort(vec.begin(),vec.end());
for (iter = vec.begin(); iter != vec.end(); iter++) {
iter->display();
}
cout << "rend:" << endl;
MyVector::reverse_iterator iter2 = vec.rbegin();
while (iter2 != vec.rend())
{
(iter2++)->display();
}
return 0;
}
输出



