Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 二进制表达式(';std::ostream';(又称';basic#ostream<;char>;';)和';const std::vector<;int>;';)的操作数无效_C++_Templates_Vector_Ostream - Fatal编程技术网

C++ 二进制表达式(';std::ostream';(又称';basic#ostream<;char>;';)和';const std::vector<;int>;';)的操作数无效

C++ 二进制表达式(';std::ostream';(又称';basic#ostream<;char>;';)和';const std::vector<;int>;';)的操作数无效,c++,templates,vector,ostream,C++,Templates,Vector,Ostream,我有以下问题。我只是想输出一个向量,但它说“二进制表达式('std::ostream'(又名'basic_ostream')的操作数无效”,并且 ‘const std::vector’” 代码: #include <stdio.h> #include <iostream> #include <vector> template <size_t B, size_t N, typename T = int> class Number { p

我有以下问题。我只是想输出一个向量,但它说“二进制表达式('std::ostream'(又名'basic_ostream')的操作数无效”,并且 ‘const std::vector’”

代码:

#include <stdio.h>
#include <iostream>
#include <vector>




template <size_t B, size_t N, typename T = int>
class Number
{

  private:
   std::vector<T> v[N]; // Vector que contendrá el numero desglozado
   void toBase(int valor);

 public:
   Number(int valor); // Constructor
   Number <B,N,T> suma(const Number<B,N,T>& sumando) const;
   std::ostream& write(std::ostream& os)const;
 };


template <size_t B, size_t N, typename T>
Number<B,N,T>::Number(int valor)
{
  toBase(valor);
  std::cout << write() << std::endl;
}



template <size_t B, size_t N, typename T>
void Number<B,N,T>::toBase(int valor)
{
   for(int i = 0; i < N; i++) {
    int aux = valor % B;
    v[i].push_back(aux);
  }
}



template <size_t B, size_t N, typename T>
std::ostream& Number<B,N,T>::write(std::ostream& os) const
{
  for(int i = 0; i < N; i++){
    os << v[i] << std::endl;
   }
}
#包括
#包括
#包括
模板
班号
{
私人:
std::vector v[N];//vector que contendráel numero desglozado
无效托巴塞(内胆);
公众:
数字(int-valor);//构造函数
数字相扑(常数和相扑)常数;
std::ostream&write(std::ostream&os)常量;
};
模板
数字::数字(int-valor)
{
托巴斯(勇气);

std::cout你似乎把它和大括号混淆了

std::vector<T> v[N];
std::vector v[N];
您在上面的声明中声明了向量数组。我认为您希望声明一个包含4个元素/数字的向量。在这种情况下,您必须使用其他大括号:

std::vector<T> v{N};
std::vector v{N};

v
首先是一个向量数组。
v
首先是一个向量数组。向量没有
运算符。你也有一个
std::cout的问题,这是相同的数组/向量混淆。如果你真的认为你需要一个向量数组,那么你将不得不写两个循环,一个外循环我知道向量是什么。我不明白你的意思。我不明白。你是说,例如,如果我想创建一个整数的向量,大小为N,那么“std::vector v[N];”是错的吗?我必须用大括号代替“std::vector v{N};”?@Michalistico是错误的是,你理解正确。作为类的成员,你应该使用{N}。但是作为函数的局部变量,你也可以使用(N)@Michalistico一个整数向量就是这个
std::vector v;
。这是一个大小为零的向量,你可以使用
push_back
添加整数。如果你想要一个大小为N的向量,那么它应该是
std::vector v{N};
std::vector v(N)你不需要使用<代码> PuthBuffe<代码>。我理解…所以在C++中丢失了。谢谢各位,Soz为哑帖子:
std::vector<T> v{N};