gpt4 book ai didi

c++ - 使用 vector::operator[] 迭代结构 vector 时如何访问结构成员

转载 作者:行者123 更新时间:2023-11-28 07:30:00 26 4
gpt4 key购买 nike

我想访问 Line 结构的 token_list 中的“line_number”。为什么 token_line_number = line.token_list[i+i].line_number; 返回“1”而不是“2”?我包括两种不同的方法可以达到“2”,但我想理解为什么我的第一个代码片段返回“1”。

#include <string>
#include <vector>
int main()
{
struct Token
{
std::string text;
int line_number;
};
struct Line
{
std::vector<Token> token_list;
};
Token token;
Line line;

token.text = "A";
token.line_number = 1;
line.token_list.push_back(token);
token.text = "B";
token.line_number = 2;
line.token_list.push_back(token);

int token_line_number = 0;
int i = 0;
if ( i + 1 < line.token_list.size() )
{
token_line_number = line.token_list[i+i].line_number; // <-- I want this to be '2'. Instead it is '1'.
Token token = line.token_list[i+1];
token_line_number = token.line_number; // This is '2'.
}
token_line_number = 0;
std::vector<Token>::const_iterator iter;
if ( iter + 1 != line.token_list.end() )
token_line_number = (iter + 1)->line_number; // This is '2'.
}

最佳答案

这里不改变i的值,所以它是0:

int i = 0;
if ( i + 1 < line.token_list.size() )
{
token_line_number = line.token_list[i+i].line_number; // i has not been changed from 0

请记住 0+00。所以 line.token_list[i+i]line.token_list[0]

关于c++ - 使用 vector::operator[] 迭代结构 vector 时如何访问结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com