Memset () ir C++ funkcija. Tas objektā kopē vienu rakstzīmi noteiktu skaitu reižu. Tas ir noderīgi, lai aizpildītu vairākus baitus ar noteiktu vērtību, sākot no noteiktas atmiņas vietas. Tas ir definēts galvenes fails.
Sintakse:
void* memset( void* str, int ch, size_t n);>
Memset() pārvērš vērtību ch par neparakstītu char un kopē to katrā no pirmajām n objekta rakstzīmēm, uz kuru norāda str[]. Ja objekts nav triviāli kopējams (piemēram, skalārs, masīvs vai ar C saderīga struktūra), darbība nav definēta. Ja n ir lielāks par objekta izmēru, uz kuru norāda str, darbība nav definēta.
Parametri:
- str[]: Norādiet uz objektu, lai kopētu rakstzīmi.
- ch: Rakstzīme, kas jākopē. Tā var būt rakstzīme, parastā vērtība, kā arī Būla vērtība.
- n: Kopējamo baitu skaits.
Atgriešanas vērtība: Funkcija memset () atgriež str, kursoru uz galamērķa virkni.
Laika sarežģītība: O(N) [pārvietošanai no objekta sākuma līdz beigām]
Papildtelpu sarežģītība: O(1)
Piemērs:
C++
// C++ program to demonstrate memset> #include> #include> using> namespace> std;> // Driver Code> int> main()> {> >char> str[] =>'geeksforgeeks'>;> >memset>(str,>'t'>,>sizeof>(str));> >cout << str;> >return> 0;> }> |
>
>Izvade
tttttttttttttt>
Piezīme: Mēs varam izmantot memset (), lai iestatītu visas vērtības kā 0 vai -1 arī integrālajiem datu tipiem. Tas nedarbosies, ja izmantosim to kā citas vērtības. Iemesls ir vienkāršs, memset darbojas baitam pa baitam.
rindas autocad komanda
C++
// C++ Program to demonstrate that we can use memset() to> // set all values as 0 or -1 for integral data types also> #include> using> namespace> std;> // Driver Code> int> main()> {> >int> a[5];> >// all elements of A are zero> >memset>(a, 0,>sizeof>(a));> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> >cout << endl;> >// all elements of A are -1> >memset>(a, -1,>sizeof>(a));> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> >cout << endl;> >// Would not work> >memset>(a, 5,>sizeof>(a));>// WRONG> >for> (>int> i = 0; i <5; i++)> >cout << a[i] <<>' '>;> }> |
>
>Izvade
0 0 0 0 0 -1 -1 -1 -1 -1 84215045 84215045 84215045 84215045 84215045>
Būla piemērs:
C++
// C++ Program to demonstrate that we can use memset() to> // set all values as boolean data types also> #include> using> namespace> std;> int> main()> {> >bool> prime[5];> >memset>(prime,>true>,>sizeof>(prime));> >// If you print without using boolalpha it will print> >// like this> >for> (>int> i = 0; i <5; i++)> >cout << prime[i] <<>' '>;> >cout <<>'
'>;> >// If you use boolalpha it will print like this> >for> (>int> i = 0; i <5; i++)> >cout << boolalpha << prime[i] <<>' '>;> >return> 0;> }> // This code is contributed by Susobhan Akhuli> |
>
>Izvade
1 1 1 1 1 true true true true true>
PIEZĪME: Būla jēdzienam objektam jābūt Bool tipa C++. Piem. bool arr[n];
Funkcijas memset( ) priekšrocības
1. Palieliniet lasāmību
Galvenais mērķis memset () funkcija ir pārveidot katru visas virknes rakstzīmi par konkrētu starpt vērtību pirms tās nodošanas kā ievadi. Tas ir vienas rindiņas koda fragments, kas padara to ļoti kompaktu un uzlabo lasāmību kopumā.
2. Samaziniet koda rindiņas
Tas pats uzdevums ir paveikts ātrāk nekā darbietilpīgā tehnika, izmantojot šo memset () funkcija, kas tikai pieņem ievadi, nevis nevajadzīgu cilpu izmantošanu, lai piešķirtu un pārvērstu katras virknes rakstzīmes vērtību starpt vērtību.
3. Tas ir ātrāk
Tas pats uzdevums ir paveikts ātri, nevis laikietilpīgi, izmantojot šo memset () tikai funkcijas ievade, kas novērš nepieciešamību pēc nevajadzīgām cilpām, lai piešķirtu un pārveidotu katras rakstzīmes vērtību virkne uz an starpt vērtību.
4. Noderīga, lai atbrīvotos no neatbilstības problēmas
C++ memset () funkcija palīdz programmētājam atrisināt novirzes problēmu. Ir gadījumi, kad atklājat, ka procesoram ir problēmas ar datu izlīdzināšanu, kā rezultātā rodas programmēšanas kļūda. The memcpy () un memcmp () metodes C++ ir labākās iespējas šajā situācijā.
Piezīme: memset ir veca funkcija, kas mantota no C. Tā nav īpaši elastīga, piepildot atmiņu ar dažādiem datu tipiem un vērtībām. The std::fill funkcija ir labāka alternatīva, kas pieejama STL algoritma bibliotēkā.