如何打印矢量的数据

How to print vector's data

本文关键字:数据 打印 何打印      更新时间:2023-10-16

我在互联网上搜索了很多,可以找到简单的例子来打印vector的数据。

我试图像阵列一样打印它,尽管它不起作用......

这是我尝试过的:

using namespace std ;
.....
const int MAX = 255 ;
vector <string> testersName[MAX];
cout << testersName[i] << endl;

错误仅在cout行中,第一行正在遵守,一切顺利。

我在测试人员名称中获得了数据,尽管我收到此错误:

"错误 1 错误 C2679:二进制'<<':找不到采用类型为'std::vector<_Ty>'的右操作数的运算符(或没有可接受的转换)"

vector <string> testersName[MAX];声明一个向量数组,请尝试简单地vector <string> testersName(MAX); - 这声明了一个包含MAX元素的向量。

你必须遍历向量的元素,然后对每个元素进行更新:

vector <string> testersName;
// Fill your vector
for (int i = 0; i < testersName.size(); ++i) {
    cout << testersName[i] << endl;
}

此外,我不认为这条线vector <string> testersName[MAX];做你认为它做的事情。没有必要为矢量指定大小,因为它会在您填充时动态增长。如果您仍然想给出大小,请使用括号:(MAX)

我发现打印矢量的最佳方法是使用某种包装器:

让我们从:

template< typename T >
class ConstVecFormat
{
   private:
      std::vector<T> const& vec_;
      const std::string prefix_, delim_, suffix_;
   public:
      explicit ConstVecFormat( std::vector<T> const& vec, prefix="", delim=",", suffix="" ) :
          vec_(vec), prefix_(prefix), delim_(delim), suffix_(suffix_)
      {
      }
      std::ostream& print( std::ostream& os ) const
      {
         typename std::vector<T>::const_iterator iter = vec_.begin(), end=vec_.end();
         os << prefix_;
         if( iter != end )
              os << *iter;
         else 
           while( ++iter != end )
           {
             os << delim_ << *iter;
           }
         os << suffix_;
         return os;
      }
 };
 template< typename T >
 std::ostream & operator<<( std::ostream & os, ConstVecFormat<T> const& format )
 {
     return format.print( os );
 }

这正朝着成为上一个主题的副本,我们在之前的主题中对此模板进行了大量增强,以生成一个用于打印集合的通用模板。