C++ primer 学习笔记——向 量

来源:互联网 发布:四字网络用语 编辑:程序博客网 时间:2024/05/13 03:44

vector 是一个类模板

//模板定义template<class  形参名,class 形参名,…>  class 类名     { ... };

定义和初始化

vector<T> v1;vector<T> v2(v1);vector<T> v2=v1;vector<T> v3(n,val);//包含n个重复单位valvector<T> v3(n);//直接初始化:创建指定数量n的元素,初始化为0vector<T> v4{a,b,c}//列表初始化,元素有3个,元素值为a,b,cvector<T> v4={a,b,c...}vector<T> v5(a1,a1+10);//用数组初始化向量
//当初始化使用{}但提供的值无法用来列表初始化vector<string> v1{"hi"};//列表初始化vector<string> v2{10};//有10个默认初始化元素vector<string> v3{10,"hi"};//10个hi

vector操作

vector<T> v;v.push_back(i);//i放到v尾端,添加新元素v.empty();v.size();!= == <= >= > < 

vector对象的访问和索引

//3.14#include<iostream>#include<vector>using std::cout;using std::endl;using std::vector;using std::cin;int main(){    vector<int> vint;//向量有高效增长性,没必要设置大小    int num;    while (cin >> num)//ctrl+z结束        vint.push_back(num);    for (auto i : vint)//也可以用 auto &i : vint        cout << i << " ";    return 0;}

使用下标运算符

#include<iostream>#include<vector>using std::vector;using std::cin;using std::cout;int main(){//以10分为一个分数段统计成绩数量    vector<int> scores(11);    int score;    while (cin >> score)    {        if (score <= 100)            ++scores[score / 10];    }    for (auto i : scores)        cout << i << ' ';}

PS:不能对空vector使用下标索引

课后练习

//3.17#include<iostream>#include<string>#include<vector>using std::string;using std::vector;using std::cout;using std::cin;using std::endl;int main(){    vector<string> vstring;    string word;    while (cin >> word)    {        for (auto &c : word)//必须使用引用,才能改变字符串中字符。不使用引用时,c这是个临时参数        {            c = toupper(c);        }        vstring.push_back(word);    }    for (auto c : vstring)        cout << c << endl;}
//3.20#include<iostream>#include<vector>using std::vector;using std::endl;using std::cin;using std::cout;int main(){    vector<int> int_vector;    int num;    while (cin >> num)    {        int_vector.push_back(num);    }    int size = int_vector.size();    for (int i = 0; i < size/2; i++)    {        cout << int_vector[i] + int_vector[size-i-1] << " ";    }    if (size % 2 != 0)        cout << int_vector[(size-1)/2];    return 0;}
//程序6、整数vector容器A和vector容器B,编程实现将B中包含A的元素删除掉#include<iostream>#include<vector>using namespace std;int main(){    vector<int> A{ 2, 4, 6, 8 };    vector<int> B{ 1, 2, 3, 4, 5, 6, 7, 8, 9 };    int n = 0;    for (auto it = A.begin(); it != A.end();++it)    {        for (auto it2 = B.begin(); it2 != B.end(); ++it2)        {               if (*it == *it2)            {                ++n;                while (it2 != B.end()-1)                {                    *it2 = *(it2 + 1);                    ++it2;                }                //B.erase(it2);            }        }    }    while (n--)    {        B.pop_back();    }    for (auto &i : B)    {        cout << i << " ";    }    return 0;}
0 0
原创粉丝点击