C++primer第三章

  •  3.3 vector容器

  • vector初始化的真正含义依赖于圆括号还是花括号,eg.
vector<int>v1(10)//v1有10个元素,每个元素都是0
vector<int>v1{10}//v1有1个元素,值为10
vector<int>v1(10,1)//v1有10个元素,每个的值为1
vector<int>v1{10,1}//v1有2个元素,值为10和1

圆括号是表明vector对象的容量

花括号是列表初始化,里面的值代表元素的初始值

  • vector对象中元素的访问使用范围for语句
#include <iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
  int a;
  vector<int>v1;
  while(cin>>a)
  {
      v1.push_back(a);
  }
  for(auto c:v1)//范围for循环
    cout<<c<<endl;

    return 0;
}

vector内对象的索引:v1[i],类似数组的索引,i从0开始,只能对已经存在的元素进行下标索引操作

习题3.17

#include <iostream>
#include<cstring>
#include<vector>
using namespace std;

int main()
{
    string  a;
    char j='u';
    vector<string>v1;
    while(cin>>a)
    {
        v1.push_back(a);
    }
    for(auto &x:v1)
    {
        for(auto &c:x)
            {
                c=toupper(c);//c的值修改后记得赋给c
            }
        cout<<x<<endl;
    }
    return 0;
}
  • 3.4 迭代器

迭代器的使用大同小异,首先定义一个迭代器指向容器的第一个对象,使用迭代器进行for循环对容器内的对象进行操作,有点类似于数组下标的含义,但是迭代器表示的是容器内对象的“下标”。

习题3.21

#include <iostream>
#include<cstring>
#include<vector>
using namespace std;

int main()
{
    int a;
    vector<int>v1;
    while(cin>>a)
    {
        v1.push_back(a);
    }
    for(auto it=v1.cbegin();it!=v1.cend();++it)//迭代器的使用主要是这句话
        cout<<*it+*(it+1)<<endl;
    return 0;
}

习题3.22

#include <iostream>
#include<cstring>
#include<vector>
using namespace std;

int main()
{
    int a;
    vector<int>v1;
    for(int i=0;i<10;i++)
    {
        cin>>a;
        v1.push_back(a);
    }
    for(auto it=v1.cbegin();it!=v1.cend();++it)
        cout<<2*(*it)<<endl;
    return 0;
}

习题3.24

#include <iostream>
#include<cstring>
#include<vector>
using namespace std;

int main()
{
    int a;
    vector<int>v1;
    while(cin>>a)
    {
        v1.push_back(a);
    }
    for(auto it1=v1.begin(),it2=v1.end();it1!=it2;++it1)
    {
        --it2;//注意end()指向容器尾元素的下一位置,所以要先减1,使it2指向最后一个元素
      cout<<*it1+*it2<<endl;
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_29277165/article/details/81489227