std :: set在g ++编译后给出错误

时间:2017-09-12 20:51:20

标签: c++ g++

我试图找到某个问题的解决方案(给定n个数字的数组A []和另一个数字x,确定A中是否存在两个元素,其总和恰好是x。) 这是我的解决方案:

#include <iostream>
#include <vector>
#include <set>
#include <string>

#include "stdio.h"

using std::cout;
using std::vector;

bool hasPairWithSum(vector<int> data, int sum);

int main()
{   
    int testCases;
    std::cin >> testCases;
    int arrSize;
    int sum;
    std::vector<std::string> results;
    vector<int> vec;

    for (int i = 0; i < testCases; i++) {
      std::cin >> arrSize;
      std::cin >> sum;

      for (int j = 0; j < arrSize; j++)
      {
        int tmp;
        std::cin >> tmp;
        vec.push_back(tmp);
      }
      bool result = hasPairWithSum(vec, sum);
      if (result)
        results.push_back("YES");
      else results.push_back("NO");
    }

    for (int k = 0; k < results.size(); k++)
      cout << results[k]<< std::endl;

    return 0;
}

bool hasPairWithSum(vector<int> data, int sum) {
    std::set<int> compl;
    for (int j = 0; j < data.size(); j++) {
        int currentCompl = sum - data[j];
        if (compl.find(data[j]) != compl.end())
            return true;
        compl.insert(currentCompl);
    }
    return false;
}

我正在使用c ++。在本地它工作正常,但网站在线compilator(它使用g ++ 5.4)它给出以下错误: prog.cpp: In function 'bool hasPairWithSum(std::vector, int)': prog.cpp:45:21: error: expected class-name before ';' token std::set compl; ^ prog.cpp:48:12: error: expected primary-expression before '.' token if (compl.find(data[j]) != compl.end()) ^ prog.cpp:48:35: error: expected primary-expression before '.' token if (compl.find(data[j]) != compl.end()) ^ prog.cpp:50:8: error: expected primary-expression before '.' token compl.insert(currentCompl); ^

任何人都知道我如何修改我的解决方案以使用g ++编译? 谢谢!

2 个答案:

答案 0 :(得分:4)

问题是compl是C ++关键字。使用不同的标识符。

答案 1 :(得分:4)

你正在遇到一种鲜为人知的拼写运算符的替代方法。对于世界上的某些键盘,某些特殊键很难输入,因此运算符的名称与更常规的运算符具有相同的含义(并且解析相同)。大多数代码都不使用它们。

以下是解析器知道的备用标记列表:

and, and_eq, bitand, bitor, compl, not, not_eq, or, or_eq, xor, xor_eq

compl是拼写〜的另一种方式,是按位赞美运算符。

只需将您的变量重命名为其他内容