2015-02-19 11 views
10

Esiste un metodo implementato nella libreria C++ che consente di sommare i valori di due vettori (della stessa dimensione e tipo di corso)?
Per esempio:Valori di somma di 2 vettori

std::vector<int> a;//looks like this: 2,0,1,5,0 
std::vector<int> b;//looks like this: 0,0,1,3,5 

Ora quindi aggiungendo i loro valori insieme dovrebbe essere simile a questo:

//2,0,2,8,5 

La risposta mi aspetto è o "No, non c'è" o "sì" + metodo.

+3

C'è un sovraccarico di ['std :: transform'] (http://en.cppreference.com/w/cpp/algorithm/transform) che opera su coppie di elementi da due intervalli. – juanchopanza

+3

btw, ho notato che alcune persone hanno pensato che fosse giusto abbassare la votazione di questa domanda. Qualche ragione specifica per quello? Sono almeno abbastanza certo di aver seguito tutte le regole riguardanti la corretta domanda di una domanda: | – MrGuy

risposta

24

È possibile utilizzare std::transform e std::plus<int>()

std::vector<int> a;//looks like this: 2,0,1,5,0 
std::vector<int> b;//looks like this: 0,0,1,3,5 

// std::plus adds together its two arguments: 
std::transform (a.begin(), a.end(), b.begin(), a.begin(), std::plus<int>()); 
// a = 2,0,2,8,5 

Questa forma di std::transform prende 5 argomenti

  • Due prima sono iteratori di input per le posizioni iniziale e finale della prima serie.
  • Il terzo è un iteratore di input alla posizione iniziale del secondo intervallo.
  • Il quarto è un iteratore di uscita della posizione iniziale dell'intervallo in cui sono memorizzati i risultati dell'operazione.
  • L'ultimo argomento è una funzione binaria che accetta due elementi come argomento (uno di ciascuna delle due sequenze) e restituisce alcuni valori di risultato convertibili nel tipo puntato da OutputIterator.
+0

Cheers, è esattamente quello che stavo cercando :) Lo accetto come risposta il prima possibile: p – MrGuy

+1

Ho corretto gli argomenti. Due sono gli iteratori di input per le posizioni iniziale e finale della prima sequenza. Il terzo la posizione iniziale del secondo intervallo. Il quarto è la posizione iniziale dell'intervallo in cui sono archiviati i risultati dell'operazione. L'ultimo eseguito l'operazione. –

+1

Ok, ragazzo Python qui, quindi portami con me per favore .. Non è possibile aggiungere vettoriale (della stessa lunghezza) con il segno '+'? Avrei bisogno di fare un po 'di sovraccarico dell'operatore? – quapka

Problemi correlati