由向量中的负索引引起的杂散 '342' 或它是什么

Stray ‘342’ caused by negative index in vector or what is it?

本文关键字:它是什么 向量 索引      更新时间:2023-10-16

有这段代码

#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: error: stray ‘342’ in program <br/>
     vector<unsigned int> v { 3, 4, 5, −12, −8, −7, −6, 1, 2, 10, 9, −11, 13, 14 }; <br/>
     ^ prog.cpp:23:5: error: stray ‘210’ in program prog.cpp:23:5: error: stray ‘222’ in program

我错过了什么?

如果我删除向量定义的无符号,并使负整数为正数,例如:

#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

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

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

此外,使用负值将导致v缩小vector<unsigned int>