C++ 为什么';tc++;标准库有标准容器的流输出吗?(及相关问题)
简单地说,为什么C++ 为什么';tc++;标准库有标准容器的流输出吗?(及相关问题),c++,C++,简单地说,为什么操作符没有过载如果您试图写出密钥,您将对您的决策/设计的后果负责 问题是“只打印出foo类型的对象”没有单一的答案。也许对我来说,一对给出经度和纬度的数字(因此应该用度、分、秒和小数点来表示)是一对在parentesis中用两个小数写的数字。这只是一个简单的例子,那么一些复杂的类呢?写出公共成员的名称/值?受保护的私人物品?静态成员?以某种方式标记基类?标准库没有重载运算符的原因碰巧,Python中有一个正确答案-它打印任何内容。@MaximYegorushkin,完全不同的目标
操作符没有过载如果您试图写出密钥,您将对您的决策/设计的后果负责
问题是“只打印出foo类型的对象”没有单一的答案。也许对我来说,一对给出经度和纬度的数字(因此应该用度、分、秒和小数点来表示)是一对在parentesis中用两个小数写的数字。这只是一个简单的例子,那么一些复杂的类呢?写出公共成员的名称/值?受保护的私人物品?静态成员?以某种方式标记基类?标准库没有重载运算符的原因碰巧,Python中有一个正确答案-它打印任何内容。@MaximYegorushkin,完全不同的目标问题空间。通过定义运算符重新定义运算符
template <class Key>
inline OutOfRange::OutOfRange(const Key &key) : Exception(2) {
//just the interesting part (a simplified version):
string_stream message;
message << "accessed at key/index '"<< key; // <-- there must be an operator<< for key
}
#include <iostream> // std::cout
#include <iterator> // std::ostream_iterator
#include <vector> // std::vector
#include <algorithm> // std::copy
int main () {
std::vector<int> myvector;
for (int i=1; i<10; ++i) myvector.push_back(i*10);
std::ostream_iterator<int> out_it (std::cout,", ");
std::copy ( myvector.begin(), myvector.end(), out_it );
return 0;
}