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; }
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/15264814.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步