前导:此篇用到了STL中的vector容器,以及其中的vec.push_back()操作
额外用到了vec.pop_back()操作和迭代器
注:下文将用正式语言称静态数组为数组
正文:在考虑一些问题时,先开数组是很方便的,但是在输出要求时,需要额外删除一些元素,比如极值,末尾的空格等,那我们就可以使用动态数组,将数组存入动态数组,运用其中的一些基本操作来进行元素的删除等
下面是一种实现的C++代码(其中数组定义为arr,动态数组定义为vec):
#include <bits/stdc++.h>
#define endl '\n'
#define buff ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef vector<ll> vll;
typedef vector<pair<ll,ll>> vpll;
const ll MAX_INT=0x3f3f3f3f;
const ll MAX_LL=0x3f3f3f3f3f3f3f3f;
const ll CF=2e5+9;
const ll mod=1e9+7;
const int N=1e6+7;
int arr[N];
int main()
{
ios::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
vector<int> vec;
int n;
cin >>n;
for (int i=0;i<n;i++)
{
cin >>arr[i];
}
for (int i=0;i<n;i++)
{
vec.push_back(arr[i]);
}
vector<int>::iterator itt;
for (itt=vec.begin();itt!=vec.end();itt++)
{
cout <<*itt<<' ';
}
cout <<endl;
vec.pop_back();
vec.pop_back();
vector<int>::iterator it;
for (it=vec.begin();it!=vec.end();it++)
{
cout <<*it<<' ';
}
}
这个程序的输入
输出
文章中后面的迭代器是为了检验存入是否成功,实际应用时不必写在这里,不是模板
删除元素也是额外的操作
下面是模板,直接套用就行(注意变量名的统一):
#include <bits/stdc++.h>
#define endl '\n'
#define buff ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef vector<ll> vll;
typedef vector<pair<ll,ll>> vpll;
const ll MAX_INT=0x3f3f3f3f;
const ll MAX_LL=0x3f3f3f3f3f3f3f3f;
const ll CF=2e5+9;
const ll mod=1e9+7;
const int N=1e6+7;
int arr[N];
int main()
{
ios::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
vector<int> vec;
int n;
cin >>n;
for (int i=0;i<n;i++)
{
cin >>arr[i];
}
for (int i=0;i<n;i++)
{
vec.push_back(arr[i]);
}
}