CARLA
 
载入中...
搜索中...
未找到
InformationSet.h
浏览该文件的文档.
1// Copyright (c) 2017 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
9#include "carla/NonCopyable.h" // 引入非拷贝类的头文件
10#include "carla/road/RoadElementSet.h" // 引入道路元素集合的头文件
11#include "carla/road/element/RoadInfo.h" // 引入道路信息元素的头文件
12#include "carla/road/element/RoadInfoIterator.h" // 引入道路信息迭代器的头文件
13
14#include <vector> // 引入向量的头文件
15#include <memory> // 引入智能指针的头文件
16
17namespace carla { // carla命名空间
18namespace road { // road命名空间
19
20 class InformationSet : private MovableNonCopyable { // 信息集合类,继承自不可拷贝类
21 public:
22
23 InformationSet() = default; // 默认构造函数
24
25 InformationSet(std::vector<std::unique_ptr<element::RoadInfo>> &&vec) // 接受右值向量构造函数
26 : _road_set(std::move(vec)) {} // 移动初始化道路元素集合
27
28 /// 返回从道路起点给定类型的所有信息
29 template <typename T>
30 std::vector<const T *> GetInfos() const { // 模板函数,获取指定类型的信息
31 std::vector<const T *> vec; // 创建一个存储指针的向量
32 auto it = element::MakeRoadInfoIterator<T>(_road_set.GetAll()); // 创建道路信息迭代器
33 for (; !it.IsAtEnd(); ++it) { // 遍历迭代器
34 vec.emplace_back(&*it); // 添加迭代器当前指向的元素指针到向量
35 }
36 return vec; // 返回信息向量
37 }
38
39 /// 返回给定类型和距离s的单一信息
40 template <typename T>
41 const T *GetInfo(const double s) const { // 模板函数,获取指定距离的信息
42 auto it = element::MakeRoadInfoIterator<T>(_road_set.GetReverseSubset(s)); // 创建反向迭代器
43 return it.IsAtEnd() ? nullptr : &*it; // 如果迭代器到达末尾,返回nullptr,否则返回当前元素的指针
44 }
45
46 /// 返回在指定范围内给定类型的所有信息
47 template <typename T>
48 std::vector<const T *> GetInfos(const double min_s, const double max_s) const { // 模板函数,获取指定范围的信息
49 std::vector<const T *> vec; // 创建一个存储指针的向量
50 if(min_s < max_s) { // 如果最小值小于最大值
51 auto it = element::MakeRoadInfoIterator<T>(
52 _road_set.GetSubsetInRange(min_s, max_s)); // 创建范围内迭代器
53 for (; !it.IsAtEnd(); ++it) { // 遍历迭代器
54 vec.emplace_back(&*it); // 添加当前元素指针到向量
55 }
56 } else { // 如果最小值大于等于最大值
57 auto it = element::MakeRoadInfoIterator<T>(
58 _road_set.GetReverseSubsetInRange(max_s, min_s)); // 创建反向范围迭代器
59 for (; !it.IsAtEnd(); ++it) { // 遍历迭代器
60 vec.emplace_back(&*it); // 添加当前元素指针到向量
61 }
62 }
63 return vec; // 返回信息向量
64 }
65
66 private:
67
68 RoadElementSet<std::unique_ptr<element::RoadInfo>> _road_set; // 私有成员,存储道路元素集合
69 };
70
71} // road
72} // carla
这个类用于禁止拷贝构造函数和赋值操作,但允许移动构造函数和赋值操作
std::vector< const T * > GetInfos(const double min_s, const double max_s) const
返回在指定范围内给定类型的所有信息
const T * GetInfo(const double s) const
返回给定类型和距离s的单一信息
RoadElementSet< std::unique_ptr< element::RoadInfo > > _road_set
std::vector< const T * > GetInfos() const
返回从道路起点给定类型的所有信息
InformationSet(std::vector< std::unique_ptr< element::RoadInfo > > &&vec)
表示按道路位置排序的元素集合。
CARLA模拟器的主命名空间。
Definition Carla.cpp:139