Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как сложить вектора?

8.1K
24 марта 2007 года
Нео
48 / / 30.07.2006
Допустим, есть
vector<double> a
vector<double> b
Нужно к каждому значению a прибавить значение b
Можно, конечно, пустить цикл. А есть ли какая-нибудь функция STL библиотеки для упрощения этого дела и для большей наглядности?
309
24 марта 2007 года
el scorpio
1.1K / / 19.09.2006
Нужно переопределить глобальный оператор + для векторов.
Код:
template <class T> vector <T> __fascall operator + (const vector <T> &First, const vector <T> &Other) const
   {
      SumVector <T> Result;
      int Max_Size = (First.size() >= Other.size()) ? First.size() : Other.size();
      Result.resize (Max_Size);
      for (int i = First.size(); i >=0 ;i--)
        Result  = First.;
      for (int i = Other.size(); i >=0 ;i--)
        Result  += Other ;
      return Result;
   }
};

Для класса DynamicArray работает
8.1K
24 марта 2007 года
Нео
48 / / 30.07.2006
Спасибо. А можно поподробнее, куда запихнуть надо переопределение оператора?
И еще заодно 1 вопрос.
for( int i = mTestColors.size(); --i >= 0; )
на эту строчку компиллятор дает warning:
warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data
Можно как-нибудь поставить в опциях, чтобы таких вот сообщений при компилляции я не получал?
17K
26 марта 2007 года
b0oh
18 / / 03.09.2006
 
Код:
typedef unsigned int size_t

Что бы не появлялось варнинга нужно сделать
 
Код:
for (int i = (int) mTestColors.size (); --i >= 0; )
{
//  anycode
}

если честно невкупаю зачем при таком условии использовать for, помоемому будет нагляднее
 
Код:
int i = (int) mTestColors.size ();
while (-- i)
{
// anycode
}
3
26 марта 2007 года
Green
4.8K / / 20.01.2000
IMHO, переопределять оператор + в данном случае - логически неверно, т.к. лично я предполагал бы в данном случае, что изменится (увеличится) сам вектор, а не его содержимое.
Поэтому я бы просто сделал функцию, назвал бы её elemByElemAddition или appendElemByElem. Сделал бы её универсальной для стандартных контейнеров? Где в цикле через итератор перебрал бы значения.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог