C++ за 21 день седьмое издание



Download 1,38 Mb.
bet434/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   429   430   431   432   433   434   435   436   437
Bog'liq
word1

//от собственности



  1. Оператор присваивания при перемещении Dynlntegers& operator= (Dynlntegers&& MoveSource)

{
if (this != SMoveSource)

{
delete [] plntegers; // освободить собственные ресурсы plntegers = MoveSource.plntegers; MoveSource.plntegers = NULL;


}
return *this;


}


-Dynlntegers() {delete[] plntegers;} // Деструктор



  1. реализовать стандартный конструктор,




  1. конструктор копий, оператор присвоения

Ответы к занятию 13


Контрольные вопросы



1.

Оператор dynam i с _ с а s t .

2.

Исправьте функцию, конечно. Оператор c o n s t c a s t и операторы приведения во­




обще должны быть последним средством.




  1. Правда.




  1. Да, правда.



Упражнения



  1. Результат динамической операции приведения всегда должен проверяться на до­ пустимость:



void DoSomething(Base* pBase)

{


Derived* pDerived = dynamic_cast (pBase);

Ответы к занятию 14

661

if(pDerived) // проверка на допустимость


pDerived->DerivedClassMethod();

}



  1. Используйте оператор s t a t i c c a s t , поскольку известно, что указываемый объ­ ект имеет тип Tuna. Взяв за основу листинг 13.1, можно получить такую функцию m ain ():



int main()

{
Fish* pFish = new Tuna;




Tuna* pTuna = static_cast(pFish);



    1. Tuna::BecomeDinner сработает только при




    1. использовании допустимого Tuna*



pTuna->BecomeDinner();



  1. виртуальный деструктор в Fish гарантирует вызов ~Tuna() delete pFish;

return 0;


Ответы к занятию 14


Контрольные вопросы



  1. Конструкция препроцессора, препятствующая множественному или рекурсивному включению файлов заголовка.




  1. 4.




  1. 10+10/5 = 10 + 2=12.




  1. Использовать скобки:



#define SPLIT(х) ((х) / 5)
Упражнения

1. Вот он:




#define MULTIPLY(a,b) ((а)* (b))



  1. Вот шаблон, аналогичный макросу из контрольного вопроса 4: template Т Split(const Т& input)

{
return (input / 5);


}



  1. Ш аблон функции swap () будет таким: template

void Swap (T& x, T& у)



  1. ПРИЛОЖЕНИЕ Г. Ответы




      1. temp = х;




    1. = у;




        1. = temp;




}













4. # d e f in e

QUARTER(х)

( (х)/ 4)




5. Определение шаблона класса выглядело бы так:

template

ctypename ArraylType, typename Array2Type>

class TwoArrays










{













private:







[10];




ArraylType Arrayl




Array2Type Array2

[10];




public:




GetArraylElement(int

Index){return Arrayl[Index];}

ArraylType&

Array2Type&

GetArray2Element(int

Index){return Array2[Index];}

Ответы к занятию 15


Контрольные вопросы



  1. Контейнер d eq u e . Только он обеспечивает вставку в начало и в конец контейнера при постоянной продолжительности.




  1. Контейнеры s t d : : s e t или s t d : :map, если у вас пары “клю ч -значение” . Если

элементы м огут дублироваться, выберите контейнеры s t d : : m u l t i s e t или





    1. t d : :m ult im a p .




  1. Да. Когда вы создаете экземпляр шаблона s t d : : s e t , можете также задать второй параметр шаблона, являющийся двоичным предикатом, который класс s e t исполь­ зует как критерий сортировки. Задайте в этом предикате критерии соответственно вашим требованиям.




  1. М ост между алгоритмами и контейнерами образуют итераторы, чтобы первые (яв­ ляющ иеся обобщением) могли взаимодействовать с последними, без необходимо­ сти знать (быть настроенным на) каждый возможный тип контейнера.




  1. Контейнер h a s h _ s e t не является стандартным для C++. Вы не должны исполь­ зовать его в переносимом приложении, применяйте в таких случаях контейнер




    1. t d : : m a p .



Ответы к занятию 15


Контрольные вопросы

1. Ш аблон s t d : : b a s i c _ s t r i n g <Т>





  1. Скопируйте эти две строки в два строковых объекта. Преобразуйте каждую скопи­ рованную строку в нижний или в верхний регистр. Получите результат сравнения преобразованных копий строк.

Ответы к занятию 16

663




  1. Нет, они не подобны. Строки в стиле С — это фактически простые указатели, родственные символьному массиву, тогда как строка библиотеки STL — это класс s t r i n g , реализую щ ий различные операторы и функции-члены для обработки строк, что делает их применение простым, насколько это возможно.



Упражнения



  1. Программа должна использовать функцию s t d : : r e v e r s e ():



#include #include #include int main ()

{
using namespace std;




cout « "Please enter a word for palindrome-check:" « endl;


string strlnput;


cin » strlnput;


string strCopy (strlnput);


reverse (strCopy.begin (), strCopy.end ());


if (strCopy == strlnput)


cout « strlnput « " is a palindrome!" « endl;


else


cout « strlnput « " is not a palindrome." « endl;


return 0;

}



  1. Используйте функцию s t d : : f i n d ():



#include #include using namespace std;


// Найдите количество символов 'chToFind' в строке "strlnput" int GetNumCharacters (strings strlnput, char chToFind)
{
int nNumCharactersFound = 0;


size_t nCharOffset = strlnput.find (chToFind); while (nCharOffset != string::npos)
{
++ nNumCharactersFound;


nCharOffset = strlnput.find (chToFind, nCharOffset + 1);

}
return nNumCharactersFound;


664 ПРИЛОЖЕНИЕ Г Ответы




int main ()

{
cout « "Please enter a string:" « endl « "> "; string strlnput;




getline (cin, strlnput);


int nNumVowels = GetNumCharacters (strlnput, 'a'); nNumVowels += GetNumCharacters (strlnput, 'e’); nNumVowels += GetNumCharacters (strlnput, 'i *); nNumVowels += GetNumCharacters (strlnput, ’o’); nNumVowels += GetNumCharacters (strlnput, 'u');


// DIY: заглавные буквы обработать также..


cout « "The number of vowels in that sentence is: " « nNumVowels


return 0;

}



  1. Используйте функцию to u p p e r ():



#include #include #include int main ()
{
using namespace std;


cout « "Please enter a string for case-conversion:" « endl; cout « "> ";
string strlnput;


getline (cin, strlnput);


cout « endl;


for ( size_t nCharlndex = 0



  1. nCharlndex < strlnput.length ()




  1. nCharlndex += 2)



strlnput [nCharlndex] = toupper (strlnput [nCharlndex]);


cout « "The string converted to upper case is: " « endl; cout « strlnput « endl « endl;
return 0;

}



  1. Это может быть очень просто реализовано так:



#include #include int main ()
{

using namespace std;

Ответы к занятию 17

665



const string strl = "I";


const string str2 = "Love";


const string str3 = "STL";


const string str4 = "String.";


string strResult = strl + " " + str2 + " " + str3 + " " + str4;



cout

«

"The sentence reads:" « endl;

cout

«

strResult;

return

0;

Ответы к занятию 17


Контрольные вопросы



  1. Нет, не могут. За постоянное время элементы могут быть только добавлены в конец вектора.




  1. Еще 10. При 11-й вставке произойдет повторное резервирование.




  1. Извлекает последний элемент; т.е. удаляет элемент с конца.




  1. Типа CM am m al.




  1. При помощи оператора индексирования ( [ ]) или функции a t ().




  1. Итератор прямого доступа.



Упражнения



  1. Одно из решений таково:



#include #include using namespace std; char DisplayOptions ()
{
cout « "What would you like to do?" « endl ; cout « "Select 1: To enter an integer" « endl;


cout « "Select 2: Query a value given ,an index" « endl;


cout « "Select 3: To display the vector" « endl « "> "


cout « "Select 4: To quit!" « endl « 11^ I.


char ch;


cin » ch;


return ch;


main 0

{



vector vecData;

666 ПРИЛОЖЕНИЕ Г. Ответы


char chUserChoice = '\0f;


while ((chUserChoice = DisplayOptions ()) != '4')
{


if (chUserChoice == '1')

{


Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   429   430   431   432   433   434   435   436   437




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish