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;
}