如何在函数中访问向量的不同成员
How to access different members of vector in a function
#include <vector>
int main()
{
vector <class> abc;
}
按下某个键时
vector.push_back(class());
每个循环
draw(vector)// what should the parameters be?
绘制功能
draw(vector,sizeofvector)
{
for (int x=0;x< sizeofvector;x++)
{draw vector[x];}
}
参数应该是什么样子的? 我应该传递 *ABC 吗?
在现代C++可以在不纠正错误的情况下回答这个问题:
for (const auto & x : vector) { draw(x); }
或者(仍在C++11(:
for (auto it = vector.cbegin(), end = vector.cend(); it != end; ++it)
{
draw(*it);
}
这在 C++98/03 中也可能有效:
for (std::size_t i = 0, end = vector.size(); i != end; ++i) { draw(vector[i]); }
如果你不打算修改向量,你通常通过 const 引用来传递它。
void draw(const std::vector<T>& v)
{
for (int x = 0; x < v.size(); x++)
{
// draw v[x];
}
}
您也可以使用迭代器(这通常是可取的(。
void draw(const std::vector<T>& v)
{
for (std::vector<T>::const_iterator x = v.begin(); x != v.end(); ++x)
{
// draw *x;
}
}
你不按值(draw(std::vector<T> v)
(传递它的原因是因为这会导致每次调用函数时复制整个向量,这显然是非常低效的。引用意味着您只引用现有向量,而不是创建新向量。
std::vector 是类型。 您需要传入一个实例,因此在您的情况下:
draw(abc);
我也同意你的函数应该有原型:
void draw( const std::vector<class> & v );
#include <algorithm>
#include <vector>
#include <iostream>
void addOne(int& value)
{
value++;
}
void print(int& value)
{
std::cout << value;
}
int main()
{
std::vector<int> myVector;
myVector.push_back(1);
myVector.push_back(2);
myVector.push_back(3);
std::for_each(myVector.begin(), myVector.end(), addOne);
std::for_each(myVector.begin(), myVector.end(), print);
}
输出:234
手写,编译器可能出错
相关文章:
- C++:从其他类访问结构的私有成员向量
- 访问类成员向量最后一项的正确方法
- 将字符串推送到私有成员向量
- 访问其他类中多个对象的私有成员向量
- 如何在类的构造函数中定义成员向量的大小
- 如何对类成员向量进行排序
- 从向量中擦除元素是否也会擦除元素中存在的所有成员向量
- 尝试从成员函数推送时不维护元素的成员向量
- C++ |无法将项添加到类成员向量
- 如何创建过滤流的成员向量
- 使用大型数据集初始化类成员向量的最有效方法
- 将C 成员向量包裹为Python命令
- 尝试保存到成员向量的连接-一次只保存一个
- 类成员向量上的迭代器未正确取消引用
- 如何在c++11中返回类成员向量
- 初始化构造函数C++中的成员向量
- 将类成员向量的内容复制到另一个向量中,然后将其交换回
- 推送到成员向量时的隔离错误
- 在堆上创建多态对象的数据成员向量
- 将此指针推回专用静态成员向量