vector用法

C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组。

vector基本用法:

#include<vector>//头文件
using namespace std;//命名空间
vector<int> Vec;//函数调用
int a;
cin>>a;
Vec.push_back(a);//在尾部加入一个数据a
Vec.pop_back();//删除最后一个数据。
int len=Vec.size();//获取长度

vector常见用法

使用元素

一般使用

Vec[1]; // 使用下标方式(避免使用)
Vec.at(1); // 使用at方式(建议使用)
Vec.front(); // 使用第一个元素
Vec.back(); // 使用最后一个元素

迭代器指针使用:

iterator begin(); // 返回向量头指针,指向第一个元素
iterator end(); // 返回向量尾指针,指向向量最后一个元素的下一个位置

vector<int>::iterator d = vec1.begin();
int d1 = *d;//vec1[0]
vector<int>::iterator e = vec1.end() - 1;
int e1 = *e;//vec1[last]`

增加元素:

vec1.push_back(x); // 在vec1的尾部添加一个元素x(注意:一般可以用emplace_back()代替,效率更高)
vec1.insert(iterator iter, x); // 在vec1的迭代器iter指向元素前增加一个元素x
vec1.insert(iterator iter, int n, x); // 在vec1的迭代器iter指向元素前增加n个元素x
vec1.insert(iterator iter, const_iterator first,const_iterator last); // 在vec1的迭代器iter指向元素前插入另一个相同类型向量的[first, last]间的数据

删除元素:

vec1.pop_back(); // 删除在vec1的最后一个元素
vec1.clear(); // 删除vec1中所有元素
vec1.erase(iterator iter); // 删除vec1中迭代器指向元素
vec1.erase(iterator first,iterator last); // 删除vec1中[first,last]中元素

判断是否为空:

bool empty() const:判断向量是否为空,若为空,则向量中无元素

vector<int> vec1 = { 1, 2, 3, 4, 5 };
bool i = vec1.empty();//输出:false
vector<int> vec2 = {  };
bool j = vec2.empty();//输出:true

vector技巧用法

一维数组去重:

sort(p.begin(),p.end());
p.erase(unique(p.begin(), p.end()), p.end());

unique函数:

头文件:#include<algorithm>
作用: 去除容器或数组中相邻的重复元素(所以在使用之前要先sort)
说明: 这里的去除是指:将重复的元素放到容器的末尾,返回值是去重之后的尾地址。

实战1 B - Unexpressed

AtCoder - abc193_c
题意:
给定一个数a,求出1~a之间不是某个数的次方的数的个数。
思路:
暴力,记录能表示成某个数次方的数,然后去重复,得到去重复后的数组长度,用a-size就是题目所求
代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll N=1e10+2;
ll n;
vector<ll> ans;
  ll len;
int main()
{
    cin>>n;
    for(ll i=2;i<=sqrt(n);i++)
    {
        ll t=i*i;
        while(t<=n)
        {
           ans.push_back(t);
            t*=i;
        }
    }
   sort(ans.begin(),ans.end());
   ans.erase(unique(ans.begin(),ans.end()),ans.end());
   len=ans.size();
   cout<<n-len<<endl;
    return 0;
}
posted @ 2021-09-13 20:51  kingwzun  阅读(107)  评论(0编辑  收藏  举报