首页 文章

如何打印矢量数据

提问于
浏览
1

我在互联网上搜索了很多,并且找到了简单的例子来打印矢量数据 .

我尝试将它打印成阵列,虽然它没有用...

这是我试过的:

using namespace std ;
.....
const int MAX = 255 ;

vector <string> testersName[MAX];
cout << testersName[i] << endl;

错误只在cout行中,第一行得到遵守,一切顺利..

我在testersName中获取了数据,但我收到此错误:

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

3 回答

  • 1

    vector <string> testersName[MAX]; 声明一个向量数组,只需尝试 vector <string> testersName(MAX); - 这声明了一个带有 MAX 元素的向量 .

  • 0

    你必须 iterate 在矢量的元素上然后brint每一个:

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

    而且,我不认为 vector <string> testersName[MAX]; 行符合你的想法 . 没有必要给矢量赋予大小,因为它在填充时会动态增长 . 如果您仍想提供大小,请使用括号: (MAX)

  • 5

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

    让我们开始:

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

    这将成为前一个主题的重复,我们对此模板进行了大量增强,以便为打印集合生成一个更通用的模板 .

相关问题