2015-11-09 4 views
0

У меня есть struct Points, в котором хранятся 4 поплавки. Эти структуры затем помещаются в вектор, потому что я храню точки чертежа (также используя OpenGL).Получение значения float из структуры, которая находится внутри вектора

typedef struct { 
    float x1, y1;               
    float x2, y2;               
} Points; 

vector<Points> line; 
Points segment; 

теперь у меня есть функция, где мои два вектора являются аргументами, и я хочу, чтобы иметь возможность доступа к каждым структурам точек (x1, x2, y1, y2)

int CyrusBeckClip (vector<Points>& line, vector<Points>& polygon) { 
    // How can I access each segment.x1 in the vector? 
    // (I reuse the segment instance for each line drawn) 
    return 0; 
} 

Как я могу получить доступ каждый сегмент.x1 в векторах?

Надеюсь, что я здесь ясен и предоставил достаточно информации. Я попытался вывести &line.front();, но это, похоже, не сработало.

+2

линия [i] .x1 должен сделать. Вам просто нужно получить доступ к членам структур. Или я что-то не понял? – therainmaker

+0

@ therainmaker Когда я это делаю, Xcode дает мне ошибку: Thread 1: EXC_BAD_ACCESS (code = 1, address = 0x0) – l00kitsjake

+0

Что такое i? Вектор должен иметь достаточно элементов (то есть i + 1 элементов). –

ответ

0

Вы можете сделать что-то вроде этого:

// using an index 
line[0].x1; 

// using an iterator 
std::vector<Points>::iterator = line.begin(); 
line_iter->x1; // access first element's x1 
(*line_iter).x1 // access first element's x1 

// using front 
line.front().x1 // access first element's x1 
1
for (Points& segment: line) { 
    // here we can use segment.x1 and others 
} 

for (Points& segment: polygon) { 
    // here we can use segment.x1 and others 
} 

Это называется range-based for loop.

Смежные вопросы