如何使用ostream_iterator显示对象的属性
How to display attributes of an object using ostream_iterator.?
>我可以使用set
迭代器和std::cout
来显示存储在多集中的元素,但对于学习过程,我想通过ostream_iterator
来做,看起来我有点无能为力。
这是我所做的和我感兴趣的
我有一个班级说班级学生
class Student
{
private :
int age_;
std::string name_;
double marks_;
public :
Student();
Student(int age, string name, double marks):
age_( age ),
name_( name ),
marks_( marks)
{
}
int get_age() const
{
return age_;
}
std::string get_name() const
{
return name_;
}
double get_marks() const
{
return marks_;
}
};
我已经将学生类的所有对象按年龄升序存储在多集中。 示例
class Compare
{
public:
bool operator ()(Student s1, Student s2)
{
return ( s1.getage() < s2.getage() );
}
};
// ... then somewhere ...
std::multiset<Student, Compare > student_set;
Student A21( 21, " AVi", 49.5 );
Student A17( 17, " BLA", 67.0 );
Student A57( 57, " BLC", 41.0 );
bla bla bla .....
bla bla bla.....
student_set.insert( A21 );
student_set.insert( A17 );
bla bla bla .....
bla bla bla.....
现在我想使用ostream_iterator
显示所有内容 这样我就会得到
student.get_name() << student.get_age() << student.get_marks();
// no idea what to do here ??
std::ostream_iterator< ???? >output( std::cout, " " );
std::copy( student_set.begin(), student_set.end(), output );
你需要
为你的类重载operator<<
,因为这是ostream_iterator
在被分配到时调用的。
像这样:
std::ostream& operator<<(std::ostream& os, const Student& s)
{
return os << get_name() << get_age() << get_marks(); // needs some formatting
}
然后用Student
作为模板参数构造迭代器:
std::ostream_iterator<Student> output( std::cout, " " );
相关文章:
- 类对象属性是否可以调用返回属性应具有的值的方法C++?
- 对象属性同级访问
- 迭代 Napi::对象属性(键)在 Node.js C++ N-API 中
- 是否可以在C++(17)中捕获某些对象属性的破坏性赋值事件
- 分配以下对象属性在哪里
- sutex作为对象属性和对象的向量
- C++ - 在类中包含不是类对象属性的变量是否是一种不好的做法
- 根据对象属性从列表中删除对象
- 将对象属性替换为列表
- 查找对象属性是否位于对象向量C++中
- 未知EABI对象属性44
- 按矢量中的对象属性合并排序
- 如何访问带有静态回调的对象属性
- c++中对象属性的内存分配
- 为什么对象属性的值在 c++ 中将其指针添加到映射后返回零
- 如何检查对象属性更新是否存在 std::map 键,否则插入一个新键?
- 从ASP.NET应用程序查询Active Directory对象属性将返回旧结果
- 性能对象属性与范围变量
- 无法访问对象属性
- 如何从对象方法中访问对象属性