const double RATE = 6.9;
상수 만들기
#include <string>
string dogName;
string 사용하기
do
{
cout << "Hello ";
countDown = countDown - 1;
}while (countDown > 0);
do while 사용하기
while (count++ <= numberOfItems)
{
cin >> caloriesForItem;
totalCalories = totalCalories
+ caloriesForItem;
}
++ 응용
#include <fstream>
fstream inputStream;
inputStream.open("player.txt");
cout << "Name: " << firstName << " "
<< lastName << endl;
cout << "Score: " << score << endl;
파일 출력하기
fstream inputStream;
inputStream.open("player.txt");
while (inputStream >> text)
{
cout << text << endl;
}
inputStream.close();
더 간결하게 작성
#include <cmath>
lengthSide = sqrt(area);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout 출력 조절하기
cmath 사용
#include <cstdlib>
exit(1);
프로그램 강종
srand(month*day);
prediction = rand() % 3;
switch (prediction)
{
case 0:
cout << "The day will be sunny!!\n";
break;
case 1:
cout << "The day will be cloudy.\n";
break;
case 2:
cout << "The day will be stormy!.\n";
break;
default:
cout << "Weather program is not functioning properly.\n";
}
난수 생성, switch 문
//Uses cmath:
int round(double number)
{
return static_cast<int>(floor(number + 0.5));
}
반올림, static_cast<"int">
void swapValues(int& variable1, int& variable2)
{
int temp;
temp = variable1;
variable1 = variable2;
variable2 = temp;
}
참조자 사용
int i, score[5], max;
cout << "Enter 5 scores:\n";
cin >> score[0];
max = score[0];
for (i = 1; i < 5; i++)
{
cin >> score[i];
if (score[i] > max)
max = score[i];
//max is the largest of the values score[0],..., score[i].
}
배열 사용
void fillUp(int a[], int size);
//Precondition: size is the declared size of the array a.
//The user will type in size integers.
//Postcondition: The array a is filled with size integers
//from the keyboard.
함수 인자로 배열 앞 대가리 주기 + 사이즈
void sort(int a[], int numberUsed)
{
int indexOfNextSmallest;
for (int index = 0; index < numberUsed - 1; index++)
{//Place the correct value in a[index]:
indexOfNextSmallest =
indexOfSmallest(a, index, numberUsed);
swapValues(a[index], a[indexOfNextSmallest]);
//a[0] <= a[1] <=...<= a[index] are the smallest of the original array
//elements. The rest of the elements are in the remaining positions.
}
}
int indexOfSmallest(const int a[], int startIndex, int numberUsed)
{
int min = a[startIndex],
indexOfMin = startIndex;
for (int index = startIndex + 1; index < numberUsed; index++)
if (a[index] < min)
{
min = a[index];
indexOfMin = index;
//min is the smallest of a[startIndex] through a[index]
}
return indexOfMin;
}
정렬 하기
struct CDAccountV1
{
double balance;
double interestRate;
int term;//months until maturity
};
CDAccountV1 account;
구조체 사용
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
계속 나오네?
void getDate(Date& theDate)
{
cout << "Enter month: ";
cin >> theDate.month;
cout << "Enter day: ";
cin >> theDate.day;
cout << "Enter year: ";
cin >> theDate.year;
}
값 입력하려면 참조자 꼭 써주기
class DayOfYear
{
public:
int month;
int day;
void output( );
};
클래스 쓰기
class DayOfYear
{
public:
void input( );
void output( );
void set(int newMonth, int newDay);
//Precondition: newMonth and newDay form a possible date.
void set(int newMonth);
//Precondition: 1 <= newMonth <= 12
//Postcondition: The date is set to the first day of the given month.
int getMonthNumber( ); //Returns 1 for January, 2 for February, etc.
int getDay( );
private:
int month;
int day;
};
private / public 나누어서 쓰기
//Uses iostream and cstdlib:
void DayOfYear::input( )
{
cout << "Enter the month as a number: ";
cin >> month;
cout << "Enter the day of the month: ";
cin >> day;
if ((month < 1) || (month > 12) || (day < 1) || (day > 31))
{
cout << "Illegal date! Program aborted.\n";
exit(1);
}
}
외부에 함수는 이렇게 써주기!
//Data consists of two items, an amount of money for the account balance
//and a percent for the interest rate.
class BankAccount
{
public:
BankAccount(double balance, double rate);
//Initializes balance and rate according to arguments.
BankAccount(int dollars, int cents, double rate);
//Initializes the account balance to $dollars.cents. For a negative balance both
//dollars and cents must be negative. Initializes the interest rate to rate percent.
BankAccount(int dollars, double rate);
//Initializes the account balance to $dollars.00 and
//initializes the interest rate to rate percent.
BankAccount( );
//Initializes the account balance to $0.00 and the interest rate to 0.0%.
private:
//A negative amount is represented as negative dollars and negative cents.
//For example, negative $4.50 sets accountDollars to -4 and accountCents to -50.
int accountDollars; //of balance
int accountCents; //of balance
double rate;//as a percent
};
생성자 친구들
BankAccount::BankAccount(double balance, double rate)
: accountDollars(dollarsPart(balance)), accountCents(centsPart(balance))
{
setRate(rate);
}
활용
int Server:: turn = 0;
int Server:: lastServed = 0;
bool Server::nowOpen = true;
변수 직접 바꿀 수 도 있음
#include <vector>
vector<int> v;
벡터 맛 보기
const Money operator +(const Money& amount1, const Money& amount2);
const Money operator -(const Money& amount1, const Money& amount2);
bool operator ==(const Money& amount1, const Money& amount2);
const Money operator -(const Money& amount);
연산자 오버로딩 선언
const Money operator +(const Money& amount1, const Money& amount2)
{
int allCents1 = amount1.getCents( ) + amount1.getDollars( )*100;
int allCents2 = amount2.getCents( ) + amount2.getDollars( )*100;
int sumAllCents = allCents1 + allCents2;
int absAllCents = abs(sumAllCents); //Money can be negative.
int finalDollars = absAllCents/100;
int finalCents = absAllCents%100;
if (sumAllCents < 0)
{
finalDollars = -finalDollars;
finalCents = -finalCents;
}
return Money(finalDollars, finalCents);
}
//Class for amounts of money in U.S. currency.
class Money
{
public:
Money( );
Money(double amount);
Money(int dollars, int cents);
Money(int dollars);
double getAmount( ) const;
int getDollars( ) const;
int getCents( ) const;
void input( ); //Reads the dollar sign as well as the amount number.
void output( ) const;
const Money operator +(const Money& amount2) const;
const Money operator -(const Money& amount2) const;
bool operator ==(const Money& amount2) const;
const Money operator -( ) const;
private:
int dollars; //A negative amount is represented as negative dollars and
int cents; //negative cents. Negative $4.50 is represented as -4 and -50
int dollarsPart(double amount) const;
int centsPart(double amount) const;
int round(double number) const;
};
클래스 안에 넣어버리기~
const Money Money::operator +(const Money& secondOperand) const
{
int allCents1 = cents + dollars*100;
int allCents2 = secondOperand.cents + secondOperand.dollars*100;
int sumAllCents = allCents1 + allCents2;
int absAllCents = abs(sumAllCents); //Money can be negative.
int finalDollars = absAllCents/100;
int finalCents = absAllCents%100;
if (sumAllCents < 0)
{
finalDollars = -finalDollars;
finalCents = -finalCents;
}
return Money(finalDollars, finalCents);
}
조금 지저분함
bool Money::operator ==(const Money& secondOperand) const
{
return ((dollars == secondOperand.dollars)
&& (cents == secondOperand.cents));
}
== 연산자
const Money Money::operator -( ) const
{
return Money(-dollars, -cents);
}
단항 연산자
class Money
{
public:
Money( );
Money(double amount);
Money(int dollars, int cents);
Money(int dollars);
double getAmount( ) const;
int getDollars( ) const;
int getCents( ) const;
void input( ); //Reads the dollar sign as well as the amount number.
void output( ) const;
friend const Money operator +(const Money& amount1, const Money& amount2);
friend const Money operator -(const Money& amount1, const Money& amount2);
friend bool operator ==(const Money& amount1, const Money& amount2);
friend const Money operator -(const Money& amount);
friend ostream& operator <<(ostream& outputStream, const Money& amount);
friend istream& operator >>(istream& inputStream, Money& amount);
private:
int dollars; //A negative amount is represented as negative dollars and
int cents; //negative cents. Negative $4.50 is represented as -4 and -50
int dollarsPart(double amount) const;
int centsPart(double amount) const;
int round(double number) const;
};
friend 사용하기
const Money operator +(const Money& amount1, const Money& amount2)
{
int allCents1 = amount1.cents + amount1.dollars*100;
int allCents2 = amount2.cents + amount2.dollars*100;
int sumAllCents = allCents1 + allCents2;
int absAllCents = abs(sumAllCents); //Money can be negative.
int finalDollars = absAllCents/100;
int finalCents = absAllCents%100;
if (sumAllCents < 0)
{
finalDollars = -finalDollars;
finalCents = -finalCents;
}
return Money(finalDollars, finalCents);
}
좀 더 깔끔띠한 코드
bool operator ==(const Money& amount1, const Money& amount2)
{
return ((amount1.dollars == amount2.dollars)
&& (amount1.cents == amount2.cents));
}
개인적으로 훨씬 직관적임
ostream& operator <<(ostream& outputStream, const Money& amount)
{
int absDollars = abs(amount.dollars);
int absCents = abs(amount.cents);
if (amount.dollars < 0 || amount.cents < 0)
//accounts for dollars == 0 or cents == 0
outputStream << "$-";
else
outputStream << '$';
outputStream << absDollars;
if (absCents >= 10)
outputStream << '.' << absCents;
else
outputStream << '.' << '0' << absCents;
return outputStream;
}
<< 연산자
//Uses iostream and cstdlib:
istream& operator >>(istream& inputStream, Money& amount)
{
char dollarSign;
inputStream >> dollarSign; //hopefully
if (dollarSign != '$')
{
cout << "No dollar sign in Money input.\n";
exit(1);
}
double amountAsDouble;
inputStream >> amountAsDouble;
amount.dollars = amount.dollarsPart(amountAsDouble);
amount.cents = amount.centsPart(amountAsDouble);
return inputStream;
}
">>" 연산자
IntPair operator++( ); //Prefix version
IntPair operator++(int); //Postfix version
IntPair IntPair::operator++(int ignoreMe) //postfix version
{
int temp1 = first;
int temp2 = second;
first++;
second++;
return IntPair(temp1, temp2);
}
IntPair IntPair::operator++( ) //prefix version
{
first++;
second++;
return IntPair(first, second);
}
++ 연산자
class CharPair
{
public:
CharPair( ){/*Body intentionally empty*/}
CharPair(char firstValue, char secondValue)
: first(firstValue), second(secondValue)
{/*Body intentionally empty*/}
char& operator[](int index);
private:
char first;
char second;
};
int main( )
{
CharPair a;
a[1] = 'A';
a[2] = 'B';
cout << "a[1] and a[2] are:\n";
cout << a[1] << a[2] << endl;
cout << "Enter two letters (no spaces):\n";
cin >> a[1] >> a[2];
cout << "You entered:\n";
cout << a[1] << a[2] << endl;
return 0;
}
//Uses iostream and cstdlib:
char& CharPair::operator[](int index)
{
if (index == 1)
return first;
else if (index == 2)
return second;
else
{
cout << "Illegal index value.\n";
exit(1);
}
}
오 배열도 돼?? 이건 몰랐네??
typedef int* IntPointer;
IntPointer p;
void sneaky(IntPointer temp)
{
*temp = 99;
cout << "Inside function call *temp == "
<< *temp << endl;
}
포인터로 인자 넘겨주기 + typedef 쓰기
IntPtr p;
int a[10];
p = a;
for (index = 0; index < 10; index++)
cout << p[index] << " ";
cout << endl;
배열이름은 포인터 포인터이다.
포인터를 배열 처럼 사용하기
IntPtr a;
a = new int[arraySize];
delete [] a;
이렇게 하면 다른 변수 끌어다가 안 쓰고 독자적인 배열로 쓸 수 있음. 대신 메모리 효율을 위해서 지워주자.
typedef int* IntArrayPtr;
IntArrayPtr *m = new IntArrayPtr[d1];
int i, j;
for (i = 0; i < d1; i++)
m[i] = new int[d2];
//m is now a d1 by d2 array.
cout << "Enter " << d1 << " rows of "
<< d2 << " integers each:\n";
for (i = 0; i < d1; i++)
for (j = 0; j < d2; j++)
cin >> m[i][j];
for (i = 0; i < d1; i++)
delete[] m[i];
delete[] m;
2차원도 쓸 수 있는데 조금 복잡함. 조심해서 쓰3.
파일 쥰내게 분할하기
//This is the header file employee.h.
//This is the interface for the class Employee.
//This is primarily intended to be used as a base class to derive
//classes for different kinds of employees.
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include <string>
using std::string;
namespace SavitchEmployees
{
class Employee
{
public:
Employee( );
Employee(const string& theName, const string& theSsn);
string getName( ) const;
string getSsn( ) const;
double getNetPay( ) const;
void setName(const string& newName);
void setSsn(const string& newSsn);
void setNetPay(double newNetPay);
void printCheck( ) const;
private:
string name;
string ssn;
double netPay;
};
}//SavitchEmployees
#endif //EMPLOYEE_H
employee.h
//This is the file: employee.cpp
//This is the implementation for the class Employee.
//The interface for the class Employee is in the header file employee.h.
#include <string>
#include <cstdlib>
#include <iostream>
#include "employee.h"
using std::string;
using std::cout;
namespace SavitchEmployees
{
Employee::Employee( ) : name("No name yet"), ssn("No number yet"), netPay(0)
{
//deliberately empty
}
Employee::Employee(const string& theName, const string& theNumber)
: name(theName), ssn(theNumber), netPay(0)
{
//deliberately empty
}
string Employee::getName( ) const
{
return name;
}
string Employee::getSsn( ) const
{
return ssn;
}
double Employee::getNetPay( ) const
{
return netPay;
}
void Employee::setName(const string& newName)
{
name = newName;
}
void Employee::setSsn(const string& newSsn)
{
ssn = newSsn;
}
void Employee::setNetPay (double newNetPay)
{
netPay = newNetPay;
}
void Employee::printCheck( ) const
{
cout << "\nERROR: printCheck FUNCTION CALLED FOR AN \n"
<< "UNDIFFERENTIATED EMPLOYEE. Aborting the program.\n"
<< "Check with the author of the program about this bug.\n";
exit(1);
}
}//SavitchEmployees
employee.cpp
//This is the header file hourlyemployee.h.
//This is the interface for the class HourlyEmployee.
#ifndef HOURLYEMPLOYEE_H
#define HOURLYEMPLOYEE_H
#include <string>
#include "employee.h"
using std::string;
namespace SavitchEmployees
{
class HourlyEmployee : public Employee
{
public:
HourlyEmployee( );
HourlyEmployee(const string& theName, const string& theSsn,
double theWageRate, double theHours);
void setRate(double newWageRate);
double getRate( ) const;
void setHours(double hoursWorked);
double getHours( ) const;
void printCheck( ) ;
private:
double wageRate;
double hours;
};
}//SavitchEmployees
#endif //HOURLYMPLOYEE_H
자식 띠~ houremployee.h
//This is the file: hourlyemployee.cpp
//This is the implementation for the class HourlyEmployee.
//The interface for the class HourlyEmployee is in
//the header file hourlyemployee.h.
#include <string>
#include <iostream>
#include "hourlyemployee.h"
using std::string;
using std::cout;
using std::endl;
namespace SavitchEmployees
{
HourlyEmployee::HourlyEmployee( ) : Employee( ), wageRate(0), hours(0)
{
//deliberately empty
}
HourlyEmployee::HourlyEmployee(const string& theName, const string& theNumber,
double theWageRate, double theHours)
: Employee(theName, theNumber), wageRate(theWageRate), hours(theHours)
{
//deliberately empty
}
void HourlyEmployee::setRate(double newWageRate)
{
wageRate = newWageRate;
}
double HourlyEmployee::getRate( ) const
{
return wageRate;
}
void HourlyEmployee::setHours(double hoursWorked)
{
hours = hoursWorked;
}
double HourlyEmployee::getHours( ) const
{
return hours;
}
void HourlyEmployee::printCheck( )
{
setNetPay(hours * wageRate);
cout << "\n________________________________________________\n";
cout << "Pay to the order of " << getName( ) << endl;
cout << "The sum of " << getNetPay( ) << " Dollars\n";
cout << "________________________________________________\n";
cout << "Check Stub: NOT NEGOTIABLE\n";
cout << "Employee Number: " << getSsn( ) << endl;
cout << "Hourly Employee. \nHours worked: " << hours
<< " Rate: " << wageRate << " Pay: " << getNetPay( ) << endl;
cout << "_________________________________________________\n";
}
}//SavitchEmployees
#include <iostream>
#include "hourlyemployee.h"
#include "salariedemployee.h"
using std::cout;
using std::endl;
using SavitchEmployees::HourlyEmployee;
using SavitchEmployees::SalariedEmployee;
int main( )
{
HourlyEmployee joe;
joe.setName("Mighty Joe");
joe.setSsn("123-45-6789");
joe.setRate(20.50);
joe.setHours(40);
cout << "Check for " << joe.getName( )
<< " for " << joe.getHours( ) << " hours.\n";
joe.printCheck( );
cout << endl;
SalariedEmployee boss("Mr. Big Shot", "987-65-4321", 10500.50);
cout << "Check for " << boss.getName( ) << endl;
boss.printCheck( );
return 0;
}
main.cpp
#ifndef SALE_H
#define SALE_H
namespace SavitchSale
{
class Sale
{
public:
Sale( );
Sale(double thePrice);
double getPrice( ) const;
void setPrice(double newPrice);
virtual double bill( ) const;
double savings(const Sale& other) const;
//Returns the savings if you buy other instead of the calling object.
private:
double price;
};
bool operator < (const Sale& first, const Sale& second);
//Compares two sales to see which is larger.
}//SavitchSale
#endif // SALE_H
virtual 선언
#ifndef DISCOUNTSALE_H
#define DISCOUNTSALE_H
#include "sale.h"
namespace SavitchSale
{
class DiscountSale : public Sale
{
public:
DiscountSale( );
DiscountSale(double thePrice, double theDiscount);
//Discount is expressed as a percent of the price.
//A negative discount is a price increase.
double getDiscount( ) const;
void setDiscount(double newDiscount);
double bill( ) const;
private:
double discount;
};
}//SavitchSale
#endif //DISCOUNTSALE_H
자동으로 virual 됨.
#include <string>
#include <iostream>
using std::string;
using std::cout;
using std::endl;
class Pet
{
public:
string name;
virtual void print( ) const;
};
class Dog : public Pet
{
public:
string breed;
virtual void print( ) const;
};
int main( )
{
Dog vdog;
Pet vpet;
vdog.name = "Tiny";
vdog.breed = "Great Dane";
vpet = vdog;
cout << "The slicing problem:\n";
//vpet.breed; is illegal since class Pet has no member named breed.
vpet.print( );
cout << "Note that it was print from Pet that was invoked.\n";
cout << "The slicing problem defeated:\n";
Pet *ppet;
Dog *pdog;
pdog = new Dog;
pdog->name = "Tiny";
pdog->breed = "Great Dane";
ppet = pdog;
ppet->print( );
pdog->print( );
//The following, which accesses member variables directly
//rather than via virtual functions would produce an error:
//cout << "name: " << ppet->name << " breed: "
// << ppet->breed << endl;
//It generates an error message saying
//class Pet has no member named breed.
return 0;
}
void Dog::print( ) const
{
cout << "name: " << name << endl;
cout << "breed: " << breed << endl;
}
void Pet::print( ) const
{
cout << "name: " << name << endl;
}
더 좋은 예시
#include <iostream>
using std::cout;
using std::endl;
//Class for a pair of values of type T:
template<class T>
class Pair
{
public:
Pair( );
Pair(T firstValue, T secondValue);
void setFirst(T newValue);
void setSecond(T newValue);
T getFirst( ) const;
T getSecond( ) const;
private:
T first;
T second;
};
template<class T>
Pair<T>::Pair(T firstValue, T secondValue)
{
first = firstValue;
second = secondValue;
}
template<class T>
void Pair<T>::setFirst(T newValue)
{
first = newValue;
}
template<class T>
T Pair<T>::getFirst( ) const
{
return first;
}
int main( )
{
Pair<char> p('A', 'B');
cout << "First is " << p.getFirst( ) << endl;
p.setFirst('Z');
cout << "First changed to " << p.getFirst( ) << endl;
return 0;
}
template 사용
//Program to demonstrate bidirectional and random access iterators.
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
using std::vector<char>::iterator;
int main( )
{
vector<char> container;
container.push_back('A');
container.push_back('B');
container.push_back('C');
container.push_back('D');
for (int i = 0; i < 4; i++)
cout << "container[" << i << "] == "
<< container[i] << endl;
iterator p = container.begin( );
cout << "The third entry is " << container[2] << endl;
cout << "The third entry is " << p[2] << endl;
cout << "The third entry is " << *(p + 2) << endl;
cout << "Back to container[0].\n";
p = container.begin( );
cout << "which has value " << *p << endl;
cout << "Two steps forward and one step back:\n";
p++;
cout << *p << endl;
p++;
cout << *p << endl;
p--;
cout << *p << endl;
return 0;
}
vector 사용
//Program to demonstrate a reverse iterator.
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
using std::vector<char>::iterator;
using std::vector<char>::reverse_iterator;
int main( )
{
vector<char> container;
container.push_back('A');
container.push_back('B');
container.push_back('C');
cout << "Forward:\n";
iterator p;
for (p = container.begin( ); p != container.end( ); p++)
cout << *p << " ";
cout << endl;
cout << "Reverse:\n";
reverse_iterator rp;
for (rp = container.rbegin( ); rp != container.rend( ); rp++)
cout << *rp << " ";
cout << endl;
return 0;
}
vector 함수 사용
#include <iostream>
#include <list>
using std::cout;
using std::endl;
using std::list;
using std::list<int>::iterator;
int main( )
{
list<int> listObject;
for (int i = 1; i <= 3; i++)
listObject.push_back(i);
cout << "List contains:\n";
iterator iter;
for (iter = listObject.begin( ); iter != listObject.end( ); iter++)
cout << *iter << " ";
cout << endl;
cout << "Setting all entries to 0:\n";
for (iter = listObject.begin( ); iter != listObject.end( ); iter++)
*iter = 0;
cout << "List now contains:\n";
for (iter = listObject.begin( ); iter != listObject.end( ); iter++)
cout << *iter << " ";
cout << endl;
return 0;
}
list
//Program to demonstrate use of the stack template class from the STL.
#include <iostream>
#include <stack>
using std::cin;
using std::cout;
using std::endl;
using std::stack;
int main( )
{
stack<char> s;
cout << "Enter a line of text:\n";
char next;
cin.get(next);
while (next != '\n')
{
s.push(next);
cin.get(next);
}
cout << "Written backward that is:\n";
while ( ! s.empty( ) )
{
cout << s.top( );
s.pop( );
}
cout << endl;
return 0;
}
stack
//Program to demonstrate use of the set template class.
#include <iostream>
#include <set>
using std::cout;
using std::endl;
using std::set;
int main( )
{
set<char> s;
s.insert('A');
s.insert('D');
s.insert('D');
s.insert('C');
s.insert('C');
s.insert('B');
cout << "The set contains:\n";
set<char>::const_iterator p;
for (p = s.begin( ); p != s.end( ); p++)
cout << *p << " ";
cout << endl;
cout << "Set contains 'C': ";
if (s.find('C')==s.end( ))
cout << " no " << endl;
else
cout << " yes " << endl;
cout << "Removing C.\n";
s.erase('C');
for (p = s.begin( ); p != s.end( ); p++)
cout << *p << " ";
cout << endl;
cout << "Set contains 'C': ";
if (s.find('C')==s.end( ))
cout << " no " << endl;
else
cout << " yes " << endl;
return 0;
}
set , 중복 없고 자동 정렬
//Program to demonstrate use of the map template class.
#include <iostream>
#include <map>
#include <string>
using std::cout;
using std::endl;
using std::map;
using std::string;
int main( )
{
map<string, string> planets;
planets["Mercury"] = "Hot planet";
planets["Venus"] = "Atmosphere of sulfuric acid";
planets["Earth"] = "Home";
planets["Mars"] = "The Red Planet";
planets["Jupiter"] = "Largest planet in our solar system";
planets["Saturn"] = "Has rings";
planets["Uranus"] = "Tilts on its side";
planets["Neptune"] = "1500 mile per hour winds";
planets["Pluto"] = "Dwarf planet";
cout << "Entry for Mercury - " << planets["Mercury"]
<< endl << endl;
if (planets.find("Mercury") != planets.end())
cout << "Mercury is in the map." << endl;
if (planets.find("Ceres") == planets.end())
cout << "Ceres is not in the map." << endl << endl;
// Iterator outputs planets in order sorted by key
cout << "Iterating through all planets: " << endl;
map<string, string>::const_iterator iter;
for (iter = planets.begin(); iter != planets.end(); iter++)
{
cout << iter->first << " - " << iter->second << endl;
}
return 0;
}
map 파이썬 딕셔너리와 유사