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