函数上半:void IntersectionInfoCache::makeIntersectionInfo(bool bIsInlink, const std::vector<LinkSymbol>& nodelinks, std::vector<IntersectionLinkInfo>& intersectionlinks) //制作路口信息,为set服务 { for(int8 i = 0; i < nodelinks.size(); ++i) { IntersectionLinkInfo intersectionLinkInfo; intersectionLinkInfo.direction = nodelinks[i].direction; intersectionLinkInfo.index = nodelinks[i].index; intersectionLinkInfo.bIsInlink = bIsInlink; RoadLinkInfo* link = NULL; RGDataManagerInstance->getRoadInfos(nodelinks[i].index,&link); intersectionLinkInfo.length = link->length; intersectionLinkInfo.linkId = link->linkId; intersectionLinkInfo.roadNameIdx = link->roadNameIdx; intersectionLinkInfo.linkKind = link->linkKind; if(nodelinks[i].direction == 0) { intersectionLinkInfo.lineCount = (link->lineCount & 0x0F); int8 pointcount = link->shapePoints.count > LinkShapePoints_Max_Count ? LinkShapePoints_Max_Count : link->shapePoints.count; intersectionLinkInfo.shapePoints.reserve(pointcount); if(bIsInlink) { for(int8 p = pointcount; p > 0; p--) { intersectionLinkInfo.shapePoints.push_back(link->shapePoints.locations[link->shapePoints.count-p].m_point); } //RoadLinkInfo记录更新 link->e_inersection_form_index = intersection_form_index; } else { for(int8 p = 0; p < pointcount; p++) { intersectionLinkInfo.shapePoints.push_back(link->shapePoints.locations[p].m_point); } //RoadLinkInfo记录更新 link->s_inersection_form_index = intersection_form_index; } } else if(nodelinks[i].direction == 1) { intersectionLinkInfo.lineCount = ((link->lineCount>>4) & 0x0F); int8 pointcount = link->shapePoints.count > LinkShapePoints_Max_Count ? LinkShapePoints_Max_Count : link->shapePoints.count; intersectionLinkInfo.shapePoints.reserve(pointcount); if(bIsInlink) { for(int8 p = pointcount-1; p >= 0; p--) { intersectionLinkInfo.shapePoints.push_back(link->shapePoints.locations[p].m_point); } //RoadLinkInfo记录更新
时间: 2024-03-28 17:36:20 浏览: 56
这段代码是用来制作路口信息,为一个set服务的。它接受三个参数,分别是一个bool类型的bIsInlink,一个包含LinkSymbol对象的vector类型的nodelinks,以及一个用来存储IntersectionLinkInfo对象的vector类型的intersectionlinks。在函数内部使用了一个for循环来遍历nodelinks中的每个LinkSymbol对象,然后把它们转换成IntersectionLinkInfo对象,并把这些对象添加到intersectionlinks中。在转换过程中,会获取每个LinkSymbol对象对应的RoadLinkInfo对象,并从中提取出一些信息,如道路长度、道路名称等等,然后填充到IntersectionLinkInfo对象中。最后,如果LinkSymbol对象的direction属性为0,则把道路形状点添加到IntersectionLinkInfo对象的shapePoints中,并更新RoadLinkInfo对象的intersection_form_index属性;如果direction属性为1,则把道路形状点反向添加到IntersectionLinkInfo对象的shapePoints中,并同样更新RoadLinkInfo对象的intersection_form_index属性。
相关问题
15 10 E:\dontknow\Administrator\Documents\csdn1.cpp [Error] template argument for 'template<class _RAIter, class _Compare> void std::sort(_RAIter, _RAIter, _Compare)' uses local type 'maxEnvelopes(std::vector<std::vector<int> >&)::<lambda(const std::vector<int>&, const std::vector<int>&)>'
这个错误通常是由于使用了 lambda 表达式作为 `std::sort` 的比较函数,但是编译器无法自动推导出 lambda 表达式的类型,需要手动指定类型。可以将 lambda 表达式的类型定义为 `std::function<bool(const std::vector<int>&, const std::vector<int>&)>`,然后将其作为 `std::sort` 的比较函数参数传递。
例如:
```
#include <vector>
#include <algorithm>
#include <functional>
std::vector<std::vector<int>> maxEnvelopes(std::vector<std::vector<int>>& envelopes) {
// lambda 表达式作为比较函数
auto cmp = [](const std::vector<int>& a, const std::vector<int>& b) {
return a[0] < b[0] || (a[0] == b[0] && a[1] > b[1]);
};
std::sort(envelopes.begin(), envelopes.end(), std::function<bool(const std::vector<int>&, const std::vector<int>&)>(cmp));
return envelopes;
}
```
Devc++中void xorEncodeDecode(std::vector<uint8_t>& data, const std::vector<bool>& binarySequence)编译不了
如果在 DevC++ 中编译出现问题,可能是由于以下几个原因:
1. 编译器错误:DevC++ 使用的是 MinGW 编译器,如果你的代码中使用了 C++11 或更高版本的特性,可能会导致编译错误。你可以尝试在 DevC++ 的编译器选项中将标准设置为 C++11 或更高版本。
2. 头文件缺失:如果你的代码中使用到了 `<vector>` 和 `<cstdint>` 头文件,但是没有正确包含它们,也会导致编译错误。请确保在代码开头包含了这两个头文件,即 `#include <vector>` 和 `#include <cstdint>`。
3. 函数定义问题:请确保你的 `xorEncodeDecode` 函数的定义正确,包括函数名、参数列表和返回类型。如果出现语法错误或函数定义与声明不匹配,也会导致编译错误。
如果你能提供更多的错误信息或具体的编译错误提示,我可以帮助你更详细地解决问题。另外,建议你在编译出错时仔细检查代码,并查阅相关文档或搜索相关问题的解决方法。
阅读全文