Другие языки программирования и технологии
[C++] Сравнение векторов. Почему-то работает криво, хотя код простой. Где ошибка?..
Имеются следующие перегрузки.. .
T& operator[]( size_type index );
const T& operator[]( size_type index ) const;
vector operator=(const vector& c2);
bool operator==(const vector& c1, const vector& c2);
bool operator!=(const vector& c1, const vector& c2);
bool operator<(const vector& c1, const vector& c2);
bool operator>(const vector& c1, const vector& c2);
bool operator<=(const vector& c1, const vector& c2);
bool operator>=(const vector& c1, const vector& c2);
Пользуйтесь!
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<long> vector1,vector2;
for (long n = 0; n <= 10; n++)
{
vector1.push_back(n * 2);
vector2.push_back(n * 2);
}
if (!vector1.empty())
{
if (vector1 == vector2) cout << "vector1 == vector2" << endl;
else cout << "vector1 != vector2" << endl;
}
vector2.pop_back(); // Удалили последний элемент из вектора
if (!vector1.empty())
{
if (vector1 == vector2) cout << "vector1 == vector2" << endl;
else cout << "vector1 != vector2" << endl;
}
cin.get();
return 0;
}
T& operator[]( size_type index );
const T& operator[]( size_type index ) const;
vector operator=(const vector& c2);
bool operator==(const vector& c1, const vector& c2);
bool operator!=(const vector& c1, const vector& c2);
bool operator<(const vector& c1, const vector& c2);
bool operator>(const vector& c1, const vector& c2);
bool operator<=(const vector& c1, const vector& c2);
bool operator>=(const vector& c1, const vector& c2);
Пользуйтесь!
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<long> vector1,vector2;
for (long n = 0; n <= 10; n++)
{
vector1.push_back(n * 2);
vector2.push_back(n * 2);
}
if (!vector1.empty())
{
if (vector1 == vector2) cout << "vector1 == vector2" << endl;
else cout << "vector1 != vector2" << endl;
}
vector2.pop_back(); // Удалили последний элемент из вектора
if (!vector1.empty())
{
if (vector1 == vector2) cout << "vector1 == vector2" << endl;
else cout << "vector1 != vector2" << endl;
}
cin.get();
return 0;
}
Дмитрий Ворончихин
Николай, этот код у Вас выводит что они равны? Если так - значит, интерпретатор (да, именно он) - имеет дыру и дело в нем.
а как вы понимаете выражение вот это?
vector1 == vector2
как происходит сравнение векторов в с++? где-то за кадром сравниваются соответствующие элементы векторов? ну и что с этого? это два разных объекта содержащих одинаковую информацию, но указывающих на разные места в памяти...
vector1 == vector2
как происходит сравнение векторов в с++? где-то за кадром сравниваются соответствующие элементы векторов? ну и что с этого? это два разных объекта содержащих одинаковую информацию, но указывающих на разные места в памяти...
Этот вектор - это не луч, выходящий из точки А и попадающий в точку В, а вообще-то массив. Массивы так не сравнивают.
Это
if (vector1 == vector2)
сравнение указателей на вектора, а не векторов
(если где-то внутри библиотек оператор "==" не переопределён)
if (vector1 == vector2)
сравнение указателей на вектора, а не векторов
(если где-то внутри библиотек оператор "==" не переопределён)
>Это
>if (vector1 == vector2)
>сравнение указателей на вектора, а не векторов
Каких к черту указателей?
#include <algorithm>
..
if (V1.size() == V2.size() && equal(V1.begin(), V1.end(), V2.begin()))
cout << "равны";
>if (vector1 == vector2)
>сравнение указателей на вектора, а не векторов
Каких к черту указателей?
#include <algorithm>
..
if (V1.size() == V2.size() && equal(V1.begin(), V1.end(), V2.begin()))
cout << "равны";
Почему-то работает криво, хотя код простой. Где ошибка?. .
> это два разных объекта содержащих одинаковую информацию, но указывающих на разные места в памяти.. .
...
> сравнение указателей на вектора, а не векторов
...
> Этот вектор - это не луч, выходящий из точки А и попадающий в точку В, а вообще-то массив. Массивы так не сравнивают.
Все вышепроцитированное - это бред, не имеющий к вопросу ни малейшего отношения. Насчет "луча" - это вообще какой-то шедевр потока сознания (((((((Ж
при подключении заголовочного файла <vector> становится доступным перегруженный оператор сравнения.
если у тебя не работает, значит у тебя поддельный компилятор, который только притворяется, будто понимает C++
> это два разных объекта содержащих одинаковую информацию, но указывающих на разные места в памяти.. .
...
> сравнение указателей на вектора, а не векторов
...
> Этот вектор - это не луч, выходящий из точки А и попадающий в точку В, а вообще-то массив. Массивы так не сравнивают.
Все вышепроцитированное - это бред, не имеющий к вопросу ни малейшего отношения. Насчет "луча" - это вообще какой-то шедевр потока сознания (((((((Ж
при подключении заголовочного файла <vector> становится доступным перегруженный оператор сравнения.
если у тебя не работает, значит у тебя поддельный компилятор, который только притворяется, будто понимает C++
Похожие вопросы
- Не работает конструктор в коде C++!
- Почему не работает код?
- Написал небольшой код на делфи. Почему не работает?
- Какое соотношение во времени в программирование между печатанием кода и исправлением ошибок?
- Написать программу на языке C, чтобы в нее вводили число, а она говорила простое оно или нет
- Что делать если сел писать код простого бота, вроде все понял из урока, но сидишь и тупишь не написав ни строчки?
- Помогите почему не работает прога C#
- Если процессоры работают на машинном коде то почему вместо использования старых языков создаются новые?
- C++: Что это значит? Что мне нужно исправить, чтобы не выдавало ошибку?
- Напишите пожалуйста код простейшей программы вычисления значения 2 в степени N.