programowanie c++
matrix: vector<double> Tab1(20), Tab2(Tab1.size()), Tab3(Tab1.size());
for (int i = 0; i < Tab1.size(); i++) Tab1[i] = Tab2[i] = Tab3[i] = 4;
Tab3.front() = Tab3.back() = 5;
Tab3.at(4) = 5; // Dostep z kontrola zasiegu.
if (Tab2 < Tab3) { cout << "Ta nierownosc jest spelniona." << endl;}
Dlaczego wykonuje się ten if
? Rozmiary tych wektorów są przecież takie same(czy chodzi, że
nazwa wektora to jak w tablicy wskaźnik do pierwszego elementu), Bardzo proszę o pomoc
Dziadek Mróz:
https://ideone.com/FYeeXu
#include <iostream>
#include <iomanip>
#include <vector>
void debug_vector(std::vector<double> v) {
std::cout << std::setw(4) << v.size() << "|";
for (std::vector<double>::iterator it=v.begin(); it!=v.end(); it++) {
std::cout << " " << *it;
}
std::cout << "|" << std::endl;
}
int main() {
std::vector<double> Tab1(20), Tab2(Tab1.size()), Tab3(Tab1.size());
for (int i=0; i<Tab1.size(); i++) {
Tab1[i] = Tab2[i] = Tab3[i] = 4;
}
Tab3.front() = Tab3.back() = 5;
Tab3.at(4) = 5;
std::cout << std::setw(4) << "size|" << std::endl;
debug_vector(Tab1);
debug_vector(Tab2);
debug_vector(Tab3);
if (Tab2 < Tab3) {
std::cout << "Ta nierownosc jest spelniona." << std::endl;
}
return 0;
}
Szukasz w googlach: "c++ vector comparison" i dostajesz link do strony
http://www.cplusplus.com/reference/vector/vector/operators/
Tu masz wyjaśnione jak są porównywane vector'y operatoram <:
The less−than comparison (operator<) behaves as if using algorithm lexicographical_compare,
which compares the elements sequentially using operator< in a reciprocal manner (i.e.,
checking both a<b and b<a) and stopping at the first occurrence.
Porównuje logicznie elementy z dwóch vector'ów i przerywa działanie na pierwszym wystąpieniu
nierówności.
Zapisz sobie tą stronę w zakładkach:
http://www.cplusplus.com/reference