C ++

Sådan bruges C ++ Vector

Sådan bruges C ++ Vector

Introduktion

En matrix er en serie af samme objekttyper på hinanden følgende hukommelsesplaceringer. En matrix kan ikke øge malmens længde. En vektor er som en matrix, men dens længde kan øges eller reduceres. En vektor har derfor mange flere operationer end en matrix.

C ++ har mange biblioteker, som alle udgør C ++ - standardbiblioteket. Et af disse biblioteker er containerbiblioteket. En container er en samling objekter, og visse operationer kan udføres på samlingen. C ++ - containere kan grupperes i to sæt: sekvensbeholdere og associerende containere. Sekvensbeholdere er vektor, array (ikke den samme array diskuteret tidligere), deque, forward_list og liste. Disse er forskellige samlinger (array-lignende datastrukturer), og hver tilbyder forskellige afvejninger.

Enhver programmør skal vide, hvordan de skal beslutte, om de skal bruge en vektor, et array, en deque, en forward_list eller en liste. Når en programmør har brug for en struktur, der kræver flere operationer end dem, der er forbundet med et almindeligt array, bør det almindelige array ikke bruges.

Hvis opgaven involverer hyppige indsættelser og sletninger midt i sekvensen, skal der bruges en liste eller en fremadliste. Hvis opgaven involverer hyppige indsættelser og sletninger i begyndelsen eller slutningen af ​​en sekvens, skal der bruges en deque. En vektor skal bruges, når denne type operationer ikke er påkrævet.

Denne artikel viser dig, hvordan du bruger C ++ -vektoren. Du har brug for noget kendskab til C ++ - markører, referencer og arrays for at forstå denne artikel.

Klasse og objekter

En klasse er et sæt variabler og funktioner, der fungerer sammen, hvor variablerne ikke har værdier tildelt. Når værdier tildeles variablerne, bliver en klasse et objekt. Forskellige værdier givet til samme klasse resulterer i forskellige objekter; forskellige objekter kan være af samme klasse, men have forskellige værdier. Oprettelse af et objekt fra en klasse kaldes også instantiering af objektet.

Udtrykket vektor beskriver en klasse. Et objekt oprettet ud fra en vektor har et navn, der vælges af programmøren.

En funktion, der hører til en klasse, er nødvendig for at instantiere et objekt fra klassen. I C ++ har denne funktion det samme navn som navnet på klassen. Forskellige objekter, der oprettes (instantieres) fra klassen, har forskellige navne, der gives til hver af dem af programmøren.

At skabe et objekt fra en klasse betyder at konstruere objektet; det betyder også at genoprette objektet.

Vektorklassen

Vektorklassen er allerede defineret og findes i biblioteket. For at bruge vektorklassen skal en programmør inkludere vektoroverskriften i filen med følgende forbehandlingsdirektiv:

#omfatte

Når overskriften er inkluderet, bliver alle vektorfunktionerne (datamedlemmer og medlemsfunktioner) tilgængelige. For at bruge optællingsobjektet til at udlæse data til terminalen (konsol) skal objektoverskriften også være inkluderet. For at skrive et program med vektoren skal mindst følgende overskrifter medtages:

#omfatte
#omfatte

Instantiering af en vektor

int foo [10];

Ovenfor er erklæringen af ​​en matrix med navnet "foo" og antallet af elementer "10.”Dette er en række heltal. Erklæringen af ​​en vektor er ens. For en vektor er antallet af elementer valgfrit, da vektorlængden kan øges eller formindskes.

På dette tidspunkt i programmet er vektorklassen allerede defineret i biblioteket, og overskriften er inkluderet. Vektoren kan instantieres som følger:

std :: vektor vtr (8);

Her er vektoren af ​​den specielle konstruktorfunktion. Typen af ​​data, som vektoren har, er "int" i vinkelparenteser. Udtrykket “vtr” er det navn, som programmøren vælger for vektoren. Endelig er "8" i parentes det foreløbige antal heltal, som vektoren har.

Udtrykket "std" står for standard navneområde. Dette udtryk skal følges af et dobbelt kolon i denne sammenhæng. Alle kan skrive deres eget vektorklassebibliotek og bruge det. C ++ har dog allerede et standardbibliotek med standardnavne, inklusive “vektor.”For at bruge et standardnavn skal standardnavnet forud for std :: . For at undgå at skrive std :: hver gang i programmet for et standardnavn, kan programfilen starte som følger:

#omfatte
#omfatte
ved hjælp af namespace std;

Overbelastning af en funktion

Når to eller flere forskellige funktionssignaturer har samme navn, siges dette navn at være overbelastet. Når en funktion kaldes, bestemmer antallet og typen af ​​argumenter, hvilken funktion der udføres.

Konstruktion af en vektor

At konstruere en vektor betyder at instantere (oprette) et vektorobjekt. Konstruktorfunktionen er overbelastet som følger:

vektor navn

Dette skaber en vektor med længden nul og skriver “T.”Følgende udsagn opretter en vektor med nul længde af typen“ flyde ”med navnet“ vtr: ”

vektor vtr;

vektor navn (n)

Dette skaber en vektor med n elementer af typen “T.”En erklæring for denne vektor med fire flydelementer er som følger:

vektor vtr (4);

vektor navn (n, t)

Dette skaber en vektor af n elementer initialiseret til værdien t. Følgende udsagn opretter en vektor på 5 elementer, hvor hvert element har værdien 3.4:

vektor vtr (5, 3.4);

Konstruktion med initialisering

En vektor kan konstrueres (oprettes) og initialiseres på samme tid på en af ​​følgende to måder:

vektor vtr = 1.1, 2.2, 3.3, 4.4;

Eller

vektor vtr 1.1, 2.2, 3.3, 4.4;

Bemærk, at der ikke er nogen parenteser lige efter objektnavnet. Parenteser, der bruges lige efter objektnavnet, skal have initialiseringslisten som følger:

vektor vtr (1.1, 2.2, 3.3, 4.4);

En vektor kan konstrueres og initialiseres senere med initialiseringslisten. I dette tilfælde vil parenteserne ikke blive brugt:

vektor vtr;
vtr = 1.1, 2.2, 3.3, 4.4;

vektor V2 (V1)

Dette er en kopikonstruktør. Det opretter en vektor V2 som en kopi af vektoren V1. Følgende kode illustrerer dette:

vektor vtr1 (5, 3.4);
vektor vtr2 (vtr1);

Tildeling af en vektor under konstruktion

Under konstruktionen kan der oprettes en tom vektor, mens den tildeles en anden som følger:

vektor vtr1 1.1, 2.2, 3.3, 4.4;
vektor vtr2 = vtr1;

Den anden erklæring svarer til:

vektor vtr2 = 1.1, 2.2, 3.3, 4.4;

const Vector

En const-vektor er en vektor, hvis elementer ikke kan ændres. Værdierne i denne vektor er skrivebeskyttet. Når den oprettes, vises vektoren som følger:

const vektor vtr 1.1, 2.2, 3.3, 4.4;

I denne vektortype kan intet element tilføjes eller fjernes. Desuden kan ingen værdi ændres.

Konstruktion med Iterator

En skabelon giver en generel repræsentation for en datatype. En iterator giver en generel repræsentation af scanning gennem værdierne i en container. Syntaksen for at oprette en vektor med en iterator er som følger:

skabelon
vektor (InputIterator først, InputIterator sidste, const Allocator & = Allocator ());

Dette konstruerer en vektor til området [første, sidste] ved hjælp af den specificerede allokator, som vil blive diskuteret senere i denne artikel.

Ødelægge en vektor

For at ødelægge en vektor skal du blot lade den gå uden for rækkevidde, og ødelægge håndteres automatisk.

Vektorkapacitet

størrelse_type kapacitet () const noexcept

Det samlede antal elementer, som vektoren kan rumme uden at kræve omfordeling, returneres af kapacitetsmedlemfunktionen. Et kodesegment for dette er som følger:

vektor vtr (4);
int num = vtr.kapacitet();
cout << num << '\n';

Outputtet er 4.

reserve (n)

Hukommelsesplads er ikke altid frit tilgængelig. Ekstra plads kan reserveres på forhånd. Overvej følgende kodesegment:

vektor vtr (4);
vtr.reserve (6);
cout << vtr.capacity() << '\n';

Outputtet er 6. Så den ekstra reserverede plads er 6 - 4 = 2 elementer. Funktionen returnerer ugyldig.

størrelse () const noexcept

Dette returnerer antallet af elementer i vektoren. Følgende kode illustrerer denne funktion:

vektor vtr (4);
flyde sz = vtr.størrelse();
cout << sz << '\n';

Outputtet er 4.

shrink_to_fit ()

Efter at have givet ekstra kapacitet til en vektor med funktionen reserve (), kan vektoren dimensioneres til at passe til den oprindelige størrelse. Følgende kode illustrerer dette:

vektor vtr (4);
vtr.reserve (6);
vtr.shrink_to_fit ();
int sz = vtr.størrelse();
cout << sz << '\n';

Outputtet er 4 og ikke 6. Funktionen returnerer ugyldig.

ændre størrelse (sz), ændre størrelse (sz, c)

Dette ændrer størrelsen på vektoren. Hvis den nye størrelse er mindre end den gamle størrelse, slettes elementerne mod slutningen. Hvis den nye størrelse er længere, tilføjes nogle standardværdier mod slutningen. For at få en bestemt værditilvækst skal du bruge resize () -funktionen med to argumenter. Følgende kodesegment illustrerer brugen af ​​disse to funktioner:

vektor vtr1 1.1, 2.2, 3.3, 4.4;
vtr1.ændre størrelse (2);
cout << "New size of vtr1: " << vtr1.size() << '\n';
vektor vtr2 1.1, 2.2;
vtr2.ændre størrelse (4, 8.8);
cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';

Outputtet er følgende:

Ny størrelse på vtr1: 2
vtr2: 1.1 2.2 8.8 8.8

Funktionerne returnerer ugyldige.

tom () const noexcept

Denne funktion returnerer 1 for sand, hvis der ikke er nogen elementer i vektoren og 0 for falsk, hvis vektoren er tom. Hvis en vektor har 4 placeringer for en bestemt datatype, såsom float, uden nogen floatværdi, er denne vektor ikke tom. Følgende kode illustrerer dette:

vektor vtr;
cout << vtr.empty() << '\n';
vektor vt (4);
cout << vt.empty() << '\n';
vektor v (4,3.5);
cout << v.empty() << '\n';

Outputtet er følgende:

1
0
0

Adgang til vektorelement

En vektor kan underskrives (indekseres) som en matrix. Indeksoptælling begynder fra nul.

vectorName [i]

Funktionen "vectorName [i]" returnerer en henvisning til elementet ved ith indeks af vektoren. Følgende kodeudgange 3.3 for ovenstående vektor:

vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr [2];
cout << fl << '\n';

vectorName [i] konst

Handlingen "vectorName [i] const" udføres i stedet for "vectorName [i]", når vektoren er en konstant vektor. Denne handling bruges i følgende kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr [2];
cout << fl << '\n';

Udtrykket returnerer en konstant henvisning til ith element i vektoren.

Tildeling af en værdi med abonnement

En værdi kan tildeles en ikke-konstant vektor som følger:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr [2] = 8.8;
cout << vtr[2] << '\n';

Outputtet er 8.8.

vectornavn.ved (i)

“VectorName.at (i) ”ligner“ vectorName [i] ”, men“ vectorName.at (i) ”er mere pålidelig. Følgende kode viser, hvordan denne vektor skal bruges:

vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr.ved (2);
cout << fl << '\n';
at () er en vektormedlemfunktion.

vectornavn.ved (i) konst

“VectorName.at (i) const ”er som“ vectorName [i] const ”, men“ vectorName.at (i) const ”er mere pålidelig. “VectorName.at (i) const "udføres i stedet for" vectorName.ved (i) ”når vektoren er en konstant vektor. Denne vektor bruges i følgende kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr.ved (2);
cout << fl << '\n';
at () const er en vektormedlemfunktion.

Tildeling af en værdi med funktionen at ()

En værdi kan tildeles en ikke-konstant vektor med funktionen at () som følger:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.ved (2) = 8.8;
cout << vtr[2] << '\n';

Outputtet er 8.8.

Problem med sub-scripting

Problemet med sub-scripting (indeksering) er, at hvis indekset er uden for området, kan nul returneres, eller der kan udstedes en fejl ved kørsel.

foran()

Dette returnerer en reference til det første element i vektoren uden at fjerne elementet. Outputtet fra følgende kode er 1.1.

vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr.foran();
cout << fl << '\n';

Elementet fjernes ikke fra vektoren.

front () konst

Når vektorkonstruktionen er forud for const, udføres udtrykket "front () const" i stedet for "front ().”Dette bruges i følgende kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr.foran();
cout << fl << '\n';

En konstant reference returneres. Elementet fjernes ikke fra vektoren.

tilbage()

Dette returnerer en henvisning til det sidste element i vektoren uden at fjerne elementet. Outputtet fra den følgende kode er 4.4.

vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr.tilbage();
cout << fl << '\n';

tilbage () konst

Når vektorkonstruktionen er forud for const, udføres udtrykket "back () const" i stedet for "back ().”Dette bruges i følgende kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
flyde fl = vtr.tilbage();
cout << fl << '\n';

En konstant reference returneres. Elementet fjernes ikke fra vektoren.

Adgang til vektordata

data () noexcept; data () const noexcept;

En af disse returnerer en markør, således at [data (), data () + størrelse ()) er et gyldigt område.

Dette vil blive beskrevet mere detaljeret senere i artiklen.

Tilbagevendende ikteratorer og vektoren

En iterator er som en markør, men har mere funktionalitet end en markør.

start () noexcept

Returnerer en iterator, der peger på det første element i vektoren, som i følgende kodesegment:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: iterator iter = vtr.begynde();
cout << *iter << '\n';

Outputtet er 1.1. Bemærk, at den erklæring, der modtager iteratoren, er blevet erklæret. Iteratoren erferfereret i et returudtryk for at opnå værdien på samme måde som en markør derferenseres.

start () const noexcept;

Returnerer en iterator, der peger på det første element i vektoren. Når vektorkonstruktionen er forud for const, udføres udtrykket "start () const" i stedet for "start ().”Under denne betingelse kan det tilsvarende element i vektoren ikke ændres. Dette bruges i følgende kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_iterator iter = vtr.begynde();
cout << *iter << '\n';

Outputtet er 1.1. Bemærk, at "const_iterator" er blevet brugt denne gang i stedet for bare "iterator" til at modtage den returnerede iterator.

slut () noexcept

Returnerer en iterator, der peger umiddelbart ud over det sidste element i vektoren. Overvej følgende kodesegment:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: iterator iter = vtr.ende();
cout << *iter << '\n';

Outputtet er 0, hvilket er meningsløst, da der ikke er noget konkret element ud over det sidste element.

end () const noexcept

Returnerer en iterator, der peger umiddelbart ud over det sidste element i vektoren. Når vektorkonstruktionen er forud for "const", udføres udtrykket "end () const" i stedet for "end ().”Overvej følgende kodesegment:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_iterator iter = vtr.ende();
cout << *iter << '\n';

Outputtet er 0. Bemærk, at "const_iterator" er blevet brugt denne gang i stedet for bare "iterator" til at modtage den returnerede iterator.

Omvendt gentagelse

Det er muligt at have en iterator, der gentager fra slutningen til lige før det første element.

rbegin () noexcept

Returnerer en iterator, der peger på det sidste element i vektoren, som i følgende kodesegment:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: reverse_iterator rIter = vtr.begynder ();
cout << *rIter << '\n';

Outputtet er 4.4.

Bemærk, at erklæringen, der modtager den omvendte iterator, er erklæret. Iteratoren erferfereret i et returudtryk for at opnå værdien på samme måde som en markør derferenseres.

rbegin () const noexcept;

Returnerer en iterator, der peger på det sidste element i vektoren. Når vektorkonstruktionen er forud for "const", udføres udtrykket "rbegin () const" i stedet for "rbegin ().”Under denne betingelse kan det tilsvarende element i vektoren ikke ændres. Denne funktion bruges i følgende kode:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_reverse_iterator rIter = vtr.begynder ();
cout << *rIter << '\n';

Outputtet er 4.4.

Bemærk, at const_reverse_iterator er blevet brugt denne gang i stedet for kun reverse_iterator til at modtage den returnerede iterator.

rend () noexcept

Returnerer en iterator, der peger lige før det første element i vektoren. Overvej følgende kodesegment:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: reverse_iterator rIter = vtr.rend ();
cout << *rIter << '\n';

Outputtet er 0, hvilket er meningsløst, da der ikke er noget konkret element lige før det første element.

rend () const noexcept

Returnerer en iterator, der peger lige før det første element i vektoren. Når vektorkonstruktionen er forud for "const", udføres udtrykket "rend () const" i stedet for "rend ().”Overvej følgende kodesegment:

const vektor vtr 1.1, 2.2, 3.3, 4.4;
vektor:: const_reverse_iterator rIter = vtr.rend ();
cout << *rIter << '\n';

Outputtet er 0.

Bemærk, at const_reverse_iterator er blevet brugt denne gang i stedet for kun reverse_iterator til at modtage den returnerede iterator.

Vector modifikatorer

En modifikator, der ændrer vektoren, kan tage eller returnere en iterator.

-en.emplace (p, args)

Indsætter et objekt af typen T konstrueret med std :: fremad(args)… før s.

For detaljer - se senere

indsæt (iteratorPosition, værdi)

Indsætter en kopi af værdien ved vektorens iteratorposition. Returnerer iteratoren (position) i den vektor, hvor kopien er placeret. Følgende kode viser, hvor værdien er placeret:

vektor vtr 10, 20, 30, 40;
vektor:: iterator iter = vtr.begynde();
++iter;
++iter;
vtr.indsæt (iter, 25);
cout << vtr[1] << " << vtr[2]<< '
'' << vtr[3] << '\n';

Outputtet er: 20 25 30.

Bemærk, at iteratoren var avanceret (inkrementeret) ligesom en markør.

En initialiseringsliste kan også indsættes, som følgende kode illustrerer:

vektor vtr 10, 20, 30, 40;
vektor:: iterator iter = vtr.begynde();
++iter;
++iter;
vtr.indsæt (iter, 25, 28);
cout << vtr[1] << " << vtr[2]<< '
'' << vtr[3]<< " << vtr[4] << '\n';

Outputtet er: 20 25 28 30.

slet (position)

Fjerner et element i positionen, som iteratoren peger på, og returnerer derefter iteratorpositionen. Følgende kode illustrerer dette:

vektor vtr 10, 20, 30, 40;
vektor:: iterator iter = vtr.begynde();
++iter;
++iter;
vtr.slette (iter);
cout << vtr[0] << " << vtr[1] << '
'' << vtr[2]<< '\n';

Outputtet er: 10 20 40

push_back (t), push_back (rv)

Bruges til at tilføje et enkelt element i slutningen af ​​vektoren. Brug push_back (t) som følger:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.push_back (5.5);
flyde fl = vtr [4];
cout << fl << '\n';

Outputtet er 5.5.

push_back (rv): - se senere.

pop_back ()

Fjerner det sidste element uden at returnere det. Størrelsen på vektoren reduceres med 1. Følgende kode illustrerer dette:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.pop_back ();
flyde sz = vtr.størrelse();
cout << sz << '\n';

Outputtet er 3.

-en.bytte (b)

To vektorer kan byttes som illustreret i følgende kodesegment:

vektor vtr1 1.1, 2.2, 3.3, 4.4;
vektor vtr2 10, 20;
vtr1.swap (vtr2);
cout << "vtr1: "<< vtr1[0] <<" "<< vtr1[1] <<"
"<< vtr1[2] <<" "<< vtr1[3] << '\n';
cout << "vtr2: "<< vtr2[0] <<" "<< vtr2[1] <<"
"<< vtr2[2] <<" "<< vtr2[3] << '\n';

Outputtet er:

vtr1: 10 20 0 0
vtr2: 1.1 2.2 3.3 4.4

Bemærk, at længden af ​​en vektor øges, hvis det er nødvendigt. Værdier, der ikke havde erstatninger, erstattes også af en eller anden standardværdi.

klar()

Fjerner alle elementer fra vektoren, som følgende kodesegment illustrerer:

vektor vtr 1.1, 2.2, 3.3, 4.4;
vtr.klar();
cout << vtr.size() << '\n';

Outputtet er 0.

Ligestillings- og relationsoperatører for vektorer

== Operatøren

Returnerer 1 for sand, hvis de to vektorer har samme størrelse, og de tilsvarende elementer er ens; Ellers returnerer den 0 for falsk. For eksempel:

vektor U 1, 2, 3;
vektor V 4, 5, 6;
bool bl = U == V;
cout << bl << '\n';

Outputtet er 0.

Det != Operatør

Returnerer 1 for sand, hvis de to vektorer ikke har samme størrelse og / eller de tilsvarende elementer ikke er ens; Ellers returnerer den 0 for falsk. For eksempel:

vektor U 1, 2, 3;
vektor V 4, 5, 6;
bool bl = U!= V;
cout << bl << '\n';

Outputtet er 1.

Det < Operator

Returnerer 1 for sand, hvis den første vektor er den indledende delmængde af den anden vektor, hvor elementerne i de to lige store dele er de samme og i samme rækkefølge. Hvis begge vektorer har samme størrelse og bevæger sig fra venstre mod højre, og der er et element i den første vektor, der er mindre end det tilsvarende element i den anden vektor, returneres 1 stadig. Ellers returneres 0 for falsk. For eksempel:

vektor U 3, 1, 1;
vektor V 3, 2, 1;
bool bl = Ucout << bl << '\n';

Outputtet er 1. < does not include the case when the size and order are the same.

> Operatøren

Vender tilbage !(U < V), where U is the first vector and V is the second vector, according to the above definitions.

Det <= Operator

Returnerer U <= V, where U is the first vector and V is the second vector, according to the above definitions.

Operatøren> =

Vender tilbage !(U <= V), where U is the first vector and V is the second vector, according to the above definitions.

Konklusion

En vektor er et eksempel på en sekvensbeholder. En vektor er en “bedre” form for det almindelige array og instantieres fra en klasse. Vektorer har metoder, der er klassificeret under: konstruktion og tildeling, kapacitet, elementadgang, dataadgang, iteratorer, modifikatorer og numeriske overbelastede operatører.

Der er andre sekvensbeholdere, kaldet liste, forward_list og array. Hvis opgaven involverer hyppige indsættelser og sletninger midt i sekvensen, skal der bruges en liste eller en fremadliste. Hvis opgaven involverer hyppige indsættelser og sletninger i begyndelsen eller slutningen af ​​sekvensen, skal der bruges en deque. Og så bør vektorer kun bruges, når denne slags operationer ikke er vigtige.

Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...