c++ - 二进制“=”:未找到采用“_Ty”类型的左侧操作数的运算符(或没有可接受的转换)
问题描述
大家好,我在程序下面写但最终我知道
我在某处犯了语法错误,代码也没有编译,它没有指向任何行,也没有发生错误的地方请帮助
错误 :
Severity Code Description Project File Line Suppression State Error C2678 binary '=': no operator found which takes a left-hand operand of type '_Ty' (or there is no acceptable conversion) Project5 c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.15.26726\include\utility 68
#include<iostream>
#include<vector>
#include<set>
using namespace std;
vector<int> a;
set<pair<int, int>> sat;
int main() {
int n;
cin >> n;
a.resize(n);
for (int i = 0; i < n; i++) {
int u;
cin >> u;
sat.insert({ u,i });
}
reverse(sat.begin(), sat.end());
///int pos = 0;
///set<pair<int, int>>::iterator it ;
auto it = sat.begin();
int prev = it->first;
a[it->second] = 1;
it++;
for (; it != sat.end(); it++) {
if (it->first == prev) {
a[it->second] = a[(next(it, -1))->second];
}
else {
a[it->second] = a[(next(it, -1))->second] + 1;
prev = it->first;
}
}
}
解决方案
虽然这是错误消息的第一行,但后面应该有其他消息,这些消息会逐步报告模板实例化的每个级别及其来源,最终在您的代码中结束。如果您仔细检查错误消息的每一行,最终您将在代码中看到以下行:
reverse(sat.begin(), sat.end());
sat
是一个std::set
。std::reverse
将容器的内容反转到位。不幸的是,您不能将std::set
. std::set
不能这样工作。std::set
是一个有序的容器,它总是std::set
以预定的顺序排列 中的值。
目前尚不清楚您的程序的意图是什么,但是无论如何,这就是您的错误消息的原因。您将不得不切换到不同的容器,可能是 astd::vector
或 a std::list
。
推荐阅读
- java - Java 领域 MissingLibraryException
- qt - 在设置 TableView Scroll 样式后,我在 QML 中收到警告
- asp.net-mvc - ASP.NET Core 中的异步路由约束
- c# - 打开 XML - 文字处理文档 - 表格单元格边框
- sql - SQL 显示每行重复记录的总数
- mysql - 如何在 Google App Script 中使用 SUBSTRING?
- oracle - 从 Oracle 生成带有签名的文件
- ibm-cloud - 找不到删除 ibm 云资源组的选项
- sql - Oracle - 如何从 LTRIM 结果中进行选择
- spring - 为什么 ``PasswordEncoder`` 实现在 Spring Security 5.x 中使用硬编码的 UTF-8 作为输入?