将stl::vector iteratator条目传递到函数中
Passing stl::vector iteratator entry into function
我有以下定义:
typedef struct tagDemoEntryAssign
{
COleDateTime datMeeting;
CString strAssignment;
int iAssignmentType; // AJT v16.0.9
int iStudyPoint; // AJT v16.0.3
int iNextStudyPoint; // AJT v16.0.9
} S_DEMO_ENTRY_ASSIGN;
using PublisherAssignments = std::vector<S_DEMO_ENTRY_ASSIGN>;
typedef struct tagDemoEntryEx
{
CString strName;
E_GENDER eGender;
E_POSITION ePosition;
E_APPOINTED eAppointed;
BOOL bDemonstrations; // AJT v16.0.3
PublisherAssignments vectorItemAssign; // Sorted array of S_DEMO_ENTRY_ASSIGN structures.
PublisherAssignments vectorItemAssignFuture; // Sorted array of S_DEMO_ENTRY_ASSIGN structures (future on active schedule).
} S_DEMO_ENTRY_EX;
using PublisherMap = std::map<CString, S_DEMO_ENTRY_EX>;
using PublisherMapIter = std::map<CString, S_DEMO_ENTRY_EX>::iterator;
我有这张地图:
PublisherMap m_mapPublishers;
我正在反向迭代一个出版商的任务:
for (auto & m_mapPublisher : m_mapPublishers)
{
for (auto iterAssign = m_mapPublisher.second.vectorItemAssign.rbegin();
iterAssign != m_mapPublisher.second.vectorItemAssign.rend(); iterAssign++)
{
S_DEMO_ENTRY_ASSIGN sDemoEntryAssign = *iterAssign;
bool bValidAssignment = GetMostRecentDateForAssignment(m_eAssignmentContext, sDemoEntryAssign);
// ...
}
}
以前我只是使用iterAssign->
来访问结构值,但我决定将内部for
循环的代码移动到一个方法中。我计算出如何将结构iterAssign
传递到方法中的唯一方法是首先复制它。
有没有其他方法可以将vectore迭代器条目传递到函数中?
是的,您可以通过引用传递值:
S_DEMO_ENTRY_ASSIGN &sDemoEntryAssign = *iterAssign;
或者简单地说:
bool bValidAssignment = GetMostRecentDateForAssignment(m_eAssignmentContext, *iterAssign);
只需确保您的GetMostRecentDateForAssignment
方法通过引用超出其参数即可:
GetMostRecentDateForAssignment(..., const S_DEMO_ENTRY_ASSIGN &sDemoEntryAssign)
注意:我将其作为const
引用,因为此方法似乎并不打算更改sDemoEntryAssign
的值。
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 在C应用程序中运行C++(带有STL)函数
- 检查函数返回类型是否与STL容器类型值相同
- STL算法函数在多个一维容器上的使用
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 有没有办法捕获 STL 函数未被赋予正确参数的异常?
- 如何在 STL 函数中找到传递给谓词的元素的索引?
- 不能对类型化模板使用 STL 函数
- 如何使用 binary_search STL 函数在嵌套类中搜索整数?
- C++ 如何将参数传递给 STL 函数
- 如何将 STL 队列推送函数绑定到 std::函数?
- STL 函数和函数类型与函数指针类型
- 接受任何 STL 容器的函数
- 重载 STL 函数
- 为什么 stl 字符串C++函数有时出错有时会出错?
- 如何将元素从 STL 队列传递到函数?
- 成员函数不能为集合迭代器和const_iterator的输入重载(但可以为其他 STL 迭代器重载)
- C++如何获取传递给函数(STL 迭代器)的参数的名称
- 为什么 STL 函数使用节点的颜色来计算 std::map 节点前身