C++:Vector指针访问内部元素的方法
程序员文章站
2022-03-23 14:19:49
...
目录
1.Vector指针访问内部元素
方法一:直接访问
void showVect1(const std::vector<int>* pVec)
{
int size = pVec->size();
for (int i = 0; i < size; i++)
{
std::cout << (*pVec)[i] << " ";
}
std::cout << std::endl;
}
方法二:迭代器访问
void showVect2(const std::vector<int>* pVec)
{
//使用迭代器
int size = pVec->size();
for (std::vector<int>::const_iterator it = pVec->begin(); it != pVec->end(); it++)
{
std::cout << *it << " ";
}
std::cout << std::endl;
}
2.Vector迭代器(iterator)
(1) const_iterator和iterator的区别
const_iterator:只能读取容器中的元素,而不能修改。
iterator:可以读取并修改容器中的元素;
(2) iterator的算术操作:
- iterator常用算术操作 ++,--;
- 加减n后赋值新的iteraor对象,例如:iter = iter+n;iter = iter-n。
- 两个iterator 对象相减,例如:
{
const vector<int>::iterator newiter1 = vectorTmp.begin();
const vector<int>::iterator newiter2 = vectorTmp.end();
cout << newiter2 - newiter1 ; //输出两个iter之间的元素长度
}
3.示例完整代码及运行结果
#include <vector>
#include <iostream>
using namespace std;
void initVect(vector<int>* const pVec)
{
for (int i = 0; i < 10;)
{
pVec->push_back(++i);
}
}
void showVect1(const vector<int>* pVec)
{
int size = pVec->size();
for (int i = 0; i < size; i++)
{
cout << (*pVec)[i] << " ";
}
cout << endl;
}
void showVect2(const vector<int>* pVec)
{
//使用迭代器
int size = pVec->size();
for (vector<int>::const_iterator it = pVec->begin(); it != pVec->end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
int main(void)
{
vector<int> vectorTmp;
initVect(&vectorTmp);
showVect1(&vectorTmp);
showVect2(&vectorTmp);
const vector<int>::iterator newiter1 = vectorTmp.begin();
const vector<int>::iterator newiter2 = vectorTmp.end();
cout << "Data length between newiter2 and newiter1:" <<
newiter2 - newiter1 << endl; //输出两个iter之间的元素长度
system("pause");
return 0;
}
运行结果:
上一篇: iOS中合并framework