C++ 向量-返回存储值的一部分?

C++ 向量-返回存储值的一部分?,c++,class,vector,C++,Class,Vector,我在网上的任何地方都找不到这一点,所以我很可能不是解决这个问题的正确方法,但可能: 我得到了一个值为a和B的类,我将这两个值存储在一个集合向量中。是否有办法仅从向量中访问值a?或者我必须为这些值创建单独的向量吗 有人想查看我的部分代码,因此: class Read{ friend ostream &operator<<(ostream &,const Read &); public: Read(char,float,float,

我在网上的任何地方都找不到这一点,所以我很可能不是解决这个问题的正确方法,但可能:

我得到了一个值为aB的类,我将这两个值存储在一个集合向量中。是否有办法仅从向量中访问值a?或者我必须为这些值创建单独的向量吗

有人想查看我的部分代码,因此:

class Read{
    friend ostream &operator<<(ostream &,const Read &);
    public:
        Read(char,float,float,float);
        ~Read();
    private:
        char objekt_;
        float x_, y_, r_;
};

int main(){
    vector<Read> v_read;

    while(fin >> objekt >> x >> y >> r){
        v_read.push_back(Read(objekt, x, y, r));
    }

    return 0;
}
类读取{
friend ostream&operator objekt>>x>>y>>r){
v_read.push_back(读取(对象,x,y,r));
}
返回0;
}

从该向量中,我希望访问向量每个部分中的objekt值。

给定一个
struct
s向量,在该结构中有两个内容,我们可以执行以下操作:

#include <vector>
#include <algorithm>
#include <boost/bind.hpp>
#include <iterator>
#include <iostream>

struct test {
  int a;
  double b;
};

int main() {
  std::vector<test> vec = {{0, 0.1}, {1, 0.2}};

  // Copy the a's to another iterator
  std::transform(vec.begin(), vec.end(),
                 std::ostream_iterator<int>(std::cout, "\n"),
                 boost::bind(&test::a,_1));

  // and the b's to another iterator
  std::transform(vec.begin(), vec.end(),
                 std::ostream_iterator<double>(std::cout, "\n"),
                 boost::bind(&test::b,_1));

  // or just copy them into another vector
  std::vector<int> veca;
  veca.reserve(vec.size());
  std::transform(vec.begin(),vec.end(),
                 std::back_inserter(veca),
                 boost::bind(&test::a,_1));
}
#包括
#包括
#包括
#包括
#包括
结构测试{
INTA;
双b;
};
int main(){
向量向量={0,0.1},{1,0.2};
//将a复制到另一个迭代器
std::transform(vec.begin(),vec.end(),
std::ostream_迭代器(std::cout,“\n”),
boost::bind(&test::a,_1));
//而b是另一个迭代器
std::transform(vec.begin(),vec.end(),
std::ostream_迭代器(std::cout,“\n”),
boost::bind(&test::b,_1));
//或者只是把它们复制到另一个向量中
向量向量向量机;
veca.reserve(vec.size());
std::transform(vec.begin(),vec.end(),
标准:背面插入器(veca),
boost::bind(&test::a,_1));
}

对于给定的
std::vector

中的所有条目,要仅处理每个结构的一部分,如果a和B值存储在向量的单独部分,可以使用一对迭代器来指示要处理的范围。与“开始”和“结束”非常相似,它给出了整个向量的范围。

向量的每个成员都是一个值。如果该值是您的类,那么您可以访问其内部。如果这个值是A或B,那么它是A或B。你可以放一个代码片段来说明你的意思吗?