如何在函数中访问向量的不同成员

How to access different members of vector in a function

本文关键字:成员 向量 访问 函数      更新时间:2023-10-16
#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

手写,编译器可能出错