由矢量中的负指数引起的流浪'\ 342'是什么?

时间:2013-12-31 16:51:46

标签: c++ vector

拥有此代码

#include <vector>
#include <iostream>
using namespace std;

size_t num_break_points(const vector<unsigned  int> in_seq)
{
  vector<unsigned  int> in{ 0 };
  in.insert(in.end(), in_seq.begin(), in_seq.end());
  in.push_back(in_seq.size() + 1);

  size_t ret = 0;

  for (size_t i = 0; i < in.size() - 1; i++)
  {
    if (in[i + 1] - in[i] != 1)
      ret++;
  }
  std::cout<<ret<<" "<<"Printed out variable x"<<endl; 
  return ret;
}

int main(){
    vector<unsigned int> v { 3, 4, 5, −12, −8, −7, −6, 1, 2, 10, 9, −11, 13, 14 };
     num_break_points(v);
     return 0;
}

我将一个向量传递给一个具有一些负数的函数,但是我得到了

  

prog.cpp:23:5:错误:在程序中迷路'\ 342'        向量v {3,4,5,-12,-8,-7,-6,1,2,10,9,-11,13,14};        ^ prog.cpp:23:5:错误:在程序prog.cpp中错误'\ 210':23:5:错误:在程序中错误'\ 222'

我错过了什么?

如果我删除了无符号的矢量定义,并将负值设为正值,如:

#include <vector>
#include <iostream>
using namespace std;

size_t num_break_points(const vector<  int> in_seq)
{
  vector<  int> in{ 0 };
  in.insert(in.end(), in_seq.begin(), in_seq.end());
  in.push_back(in_seq.size() + 1);

  size_t ret = 0;

  for (size_t i = 0; i < in.size() - 1; i++)
  {
    if (in[i + 1] - in[i] != 1)
      ret++;
  }
  std::cout<<ret<<" "<<"Printed out variable x"<<endl; 
  return ret;
}

int main(){
    vector< int> v {3, 4, 5, 12, 8, 7, 6, 1, 2, 10, 9, 11, 13, 14};
     num_break_points(v);
     return 0;
}

我明白了:

  

10打印出变量x

2 个答案:

答案 0 :(得分:2)

此错误消息表示初始化矢量的行上有无效字符。可能-不正确-,例如如果你复制了这一行,它可能是一些UTF8字符。

答案 1 :(得分:1)

您的'-'不是实际减号,您可能是从pdf或电子书中复制的

同样使用负值会导致v缩小vector<unsigned int>