我实现谓词的方法有什么问题
What is wrong with my method of implementing a predicate?
vector<pair<string, long> > probLabel;
max_element(probLabel.begin(), probLabel.end(), vectPairMax)->first
Problabel包含一个标签和一个数字。我正在尝试获取Problabel中最大的数字并返回标签。因此,我正在使用max_element并写下谓词功能。
bool vectPairMax(const pair<string, int> &lhs, const pair<string, int> &rhs) {
if (lhs.second < rhs.second) {
return true;
} else {
return false;
}
}
这是我正在写的函数还是函数指针?无论哪种情况,我都看不到这是什么错误。也许如果是功能指针,我需要解释它吗?通常,任何建议都将不胜感激
这是错误消息:
架构的未定义符号x86_64: " probcalc(dataAllfive&amp;,__ 1 :: map,std :: __ 1 :: __ 1 :: sallocator>,std :: __ 1 :: basic__string,std,std :: __ 1 :: allocator>,std :: std :: __ __ 1 :: __ 1 :: Sily,std :: Sill,std :: SERD :: SERT :: SERD :: STD :: SERT :: STD :: STD :: STD :: STD :: STD::__ 1 :: salcator>>,std :: __ 1 :: Aralocator,std :: __ 1 :: Aralocator> const,std :: __ 1 :: basic__string,std :: __ 1 :: allocator>:sallocator>>>>>>>>>>>&amp; std:,, std:,,:__ 1 :: Set,std :: __ 1 :: Arlocator>,std :: __ 1 :: Less,std :: __ 1 :: Arlocator>>,std :: __ 1 :: Aralocator,std :: __ 1 :: Arlocator>:>)",从: predictionTest(csvstream&amp;,dataAllfive&amp;)LD:符号(s)架构x86_64找不到符号clang:错误:链接器命令因出口代码1失败(使用-V查看调用)
完成凝结代码
string ProbCalc(Data &trainData, map<string, string> &tempMap2, set<string> &uniqueWords) {
vector<pair<string, int> > probLabel; // Vector of pairs of labels and their probability.
// Iterate through all known posts in training data
for (auto foo : trainData.postNum) {
probLabel.push_back(make_pair(foo, 0));
}
// Label
string mostProbPost = max_element(probLabel.begin(), probLabel.end(), vectPairMax)->first;
return mostProbPost;
}
// Predicate for max_element function
bool vectPairMax(const pair<string, int> &lhs, const pair<string, int> &rhs) {
if (lhs.second < rhs.second) {
return true;
} else {
return false;
}
}
谓词没有错。这可以很好地编译:
#include <vector>
#include <utility>
#include <string>
#include <algorithm>
bool vectPairMax(const std::pair<std::string, int> &lhs, const std::pair<std::string, int> &rhs)
{
if (lhs.second < rhs.second) {
return true;
} else {
return false;
}
}
int main()
{
std::vector<std::pair<std::string, int> > probLabel;
std::string mostProbPost = max_element(probLabel.begin(), probLabel.end(), vectPairMax)->first;
}
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 格式说明符C++有什么问题
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 我的堆栈和库存清单程序的结构有什么问题?
- 此工厂功能有什么问题?
- 以下 C++ 代码有什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了