Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet!
Il REDMAGIC Astra Gaming Tablet rappresenta una rivoluzione nel gaming portatile, combinando un display OLED da 9,06 pollici a 165Hz con il potente Snapdragon 8 Elite e un innovativo sistema di raffreddamento Liquid Metal 2.0 in un form factor compatto da 370 grammi. Si posiziona come il tablet gaming più completo della categoria, offrendo un'esperienza di gioco senza compromessi in mobilità.
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2
Dopo un mese di utilizzo intensivo e l'analisi di oltre 50 scatti, l'articolo offre una panoramica approfondita di Nintendo Switch 2. Vengono esaminate le caratteristiche che la definiscono, con un focus sulle nuove funzionalità e un riepilogo dettagliato delle specifiche tecniche che ne determinano le prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-10-2017, 17:31   #1
F4b10_01
Junior Member
 
Iscritto dal: Oct 2017
Messaggi: 1
[c++] Ordinare vector con posizioni fissate.

Ho un vettore in input contenente interi positivi e interi uguali a "-1".
Devo ordinare il vettore lasciando inalterate le posizioni in cui il vettore risuta "-1".

Esempio:
input: [-1, 150, 190, 170, -1, -1, 160, 180]
output: [-1, 150, 160, 170, -1, -1, 180, 190]

Ovviamente so come ordinare un vettore (sia mediante algoritmi vari, sia mediante funzioni da stl), ma non so/capisco come fare a lasciare inalterate le posizioni a "-1".
Suggerimenti?
Grazie.
F4b10_01 è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2017, 19:30   #2
Keyser70
Member
 
Iscritto dal: Oct 2009
Città: Santarcangelo di Romagna
Messaggi: 44
Dipende dall'efficienza che vuoi ottenere e dalla memoria a disposizione.
Supponiamo che il tuo sia un array e non uno std::vector, ma la cosa diventa ancora più semplice in tal caso.

Se non hai problemi di memoria puoi usare un set e poi sostituire i valori nel vettore originale.
Il set, nelle applicazioni reali, è velocissimo.

static const size_t size=8;
int v[size] = {-1, 150, 190, 170, -1, -1, 160, 180};

std::set<int> ordered;

for( int i = 0; i < 8; i++)
if( v[i]!=-1)
ordered.insert(v[i]);
// adesso ordered contiene [150, 160, 170, 180]

std::set<int>::iterator it = ordered.begin();
for( int i = 0; i < 8; i++)
if( v[i]!=-1)
v[i] = (*it);
// adesso v contiene [-1, 150, 160, 170, -1, -1, 180, 190]

Se invece la memoria è un problema puoi guardare qui (in inglese).

Ultima modifica di Keyser70 : 07-10-2017 alle 19:31. Motivo: formattazione aggiornata
Keyser70 è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2017, 22:50   #3
Marcus Aseth
Senior Member
 
Iscritto dal: Apr 2008
Messaggi: 648
una cosa del genere?
Codice:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;

template<typename T>
using Iter = typename vector<T>::iterator;

template<typename V>
using value_type = typename V::value_type;

template<typename T>
struct Skip {
	T condition;
	Skip(T t) :condition{ t } {};
	template<typename T> bool operator()(T t) { return condition != t; }
};

template<typename Iter>
void sort_if(Iter Begin, Iter End,
			 function<bool(value_type<Iter>)> Condition,
			 function<bool(value_type<Iter>, value_type<Iter>)> Pred);

template<typename T>
void Print(vector<T>);

int main()
{
	vector<int> VecI{ -1, 150, 190, 170, -1, -1, 160, 180 };
	vector<string> VecS{ "casa","libro","zzz","pianta","zzz","zzz","auto" };

	sort_if(VecI.begin(), VecI.end(), Skip<int>(-1), less<int>());
	sort_if(VecS.begin(), VecS.end(), Skip<string>("zzz"), less<string>());

	Print(VecI);
	Print(VecS);
}

template<typename Iter>
void sort_if(Iter Begin, Iter End,
			 function<bool(value_type<Iter>)> Condition,
			 function<bool(value_type<Iter>, value_type<Iter>)> Pred)
{
	for (auto First = Begin; First != End; First++)
	{
		for (auto Second = First + 1; Second != End; Second++)
		{
			if ((Condition(*First)) && (Condition(*Second)))
			{
				if (!Pred(*First, *Second)) {
					iter_swap(First, Second);
				}
			}
		}
	}
}

template<typename T>
void Print(vector<T> Vec)
{
	for (auto&n : Vec) {
		cout << n << "  ";
	}
	cout << endl;
}
__________________
----------------------------------------------------------------------
Grafico 3d | 3ds max 2011--Zbrush--Photoshop
----------------------------------------------------------------------

Ultima modifica di Marcus Aseth : 09-10-2017 alle 06:35.
Marcus Aseth è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Gigabyte Aero X16 Copilot+ PC: tanta potenza non solo per l'IA Gigabyte Aero X16 Copilot+ PC: tanta potenza non...
vivo X200 FE: il top di gamma si è fatto tascabile? vivo X200 FE: il top di gamma si è fatto ...
Driver più sicuri: Microsoft alza...
Ego Power+ ha la giusta accoppiata per l...
Scompiglio nei listini Amazon: prezzi im...
Sotto i 105€ il robot Lefant che lava, a...
Mini proiettori smart in offerta: uno co...
Smartwatch Amazfit in offerta: Balance o...
Windows XP ritorna: ecco come usarlo sub...
Arrow Lake in saldo: Intel taglia i prez...
LG C4 da 55'' a 899€ è il top per...
DJI Neo a 159€ è il mini drone pe...
Robot aspirapolvere DREAME D10 Plus Gen ...
A 109€ ha costretto Amazon a nuove scort...
Sbaraglia la concorrenza Intel, questo m...
Giappone all'attacco: ecco il primo wafe...
Cinema in Italia, svolta storica: arriva...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v