Форум программистов, компьютерный форум CyberForum.ru

Странный глюк с вектором - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать список l, включив в него по одному разу элементы, которые входят. В один из списков l1 или l2. Но не входят в другой http://www.cyberforum.ru/cpp-beginners/thread553864.html
Добрый вечер! Собственно суть задачи такова: Сформировать список l, включив в него по одному разу элементы, которые входят. В один из списков l1 или l2. Но не входят в другой Я не совсем поняла списки, вы не могли бы помочь разобраться в программе? есть некие наброски, но сомневаюсь, что они верны: #include <iostream> using namespace std; template <typename T> class List {
C++ Очищение памяти в ассемблерной вставке /* Выделить из строки подстроку указанной длины, начиная с заданной позиции. */ #include <stdio.h> #include <iostream> #include <stdlib.h> void main () { setlocale (LC_ALL, "rus"); http://www.cyberforum.ru/cpp-beginners/thread553863.html
Не проходит компиляция программы. Ошибки из-за graphics.h C++
#include <graphics.h> #include <stdlib.h> #include <conio.h> int random (int k) { return rand() % k; } main() {
While/For C++
Здравствуйте. Нужна помощь в парочку задач: 1) Дано натуральные числа n,b1,b2,...,bn. Найти члены bk последовательности b1,b2,...,bn, имеют такое свойство: корни уравнения x^2+3*bk-5 действительны и положительными. k,1,2,n -индекс (через While) 2)Дано натуральное число n и действительные числа b1,b2,...,bn. Вычислить обратную величину для произведения тех чисел bk последовательности...
C++ Таймер http://www.cyberforum.ru/cpp-beginners/thread553834.html
Господа знатоки,прошу помощи: Нужно реализовать таймер при запуске нужной функции: Класс class Game { protected: clock_t begin, end; int count, st, ft; public: void StartGame(); //Игра
C++ Что является причиной ошибки после завершения всех операций? (динамический массив) Что является причиной ошибки после завершения всех операций? (динамический массив) #include <iostream> #include <conio.h> #include <ctime> #include <locale> using namespace std; void main(){ setlocale(LC_CTYPE, "russian"); srand(time(NULL)); подробнее

Показать сообщение отдельно
Alex_oo7
 Аватар для Alex_oo7
48 / 59 / 4
Регистрация: 18.10.2010
Сообщений: 240
20.04.2012, 23:29     Странный глюк с вектором
Я определил операции:

Присвоения:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool s;
std::vector<int> v;
void operator=(int get_i){      
        s = get_i < 0; // знак
        if(abs(get_i) >= 1000){
            v.resize(2);
            v[0] = abs(get_i % 1000);
            v[1] = abs(get_i / 1000);
        }else{
            v.resize(1);
            v[0] = abs(get_i); 
        }   
    }
Сравнения больше:
C++
1
2
3
4
5
6
7
8
9
10
11
bool operator >(big_integer& a, big_integer& b){
    if(a.s != b.s) { return b.s; }
    if(a.v.size() > b.v.size()) {return !a.s;}
    if(a.v.size() < b.v.size()) {return a.s;}
    for(int i = a.v.size(); i >= 0; i--){
        if(a.v[i] != b.v[i]){
            return (a.v[i] > b.v[i]) ^ a.s;
        }
    }
    return false;   
}
Проблема в том, что такой код возвращает 011, а должен 010

C++
1
2
3
4
5
6
7
8
9
10
11
big_integer a, b, c;    
    a = 100;
    b = 100;
    BOOST_CHECK(a > b);
    a = big_integer("100000000000000000000000000000000000000000000000000000");
    b = big_integer(                                                     "1");
    c = big_integer( "99999999999999999999999999999999999999999999999999999");  
    BOOST_CHECK(a - b == c);    
    a = 100;
    b = 100;
    BOOST_CHECK(a > b);
Операция минус выполняется верно и при дебаге она повлияла только на a.v.capacity()
Было 1 стало 18
Почему так может происходить ?
Неужели capacity как то влияет на результат ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru