名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

はじめてのC++(What is the string made of?をC++で解き直した)

これをC++で解き直した.

yumechi0525.hatenablog.com

先にコード貼っとく,出来はひどい,

#include <iostream>
#include <map> 
using namespace std;
 
int main()
{
    map<char, int> hash;
    
    // entry
    hash['0'] = 6;
    hash['1'] = 2;
    hash['2'] = 5;
    hash['3'] = 5;
    hash['4'] = 4;
    hash['5'] = 5;
    hash['6'] = 6;
    hash['7'] = 3;
    hash['8'] = 7;
    hash['9'] = 6;
    
    string s;
    cin >> s;
    
    int res = 0;
    for(int i = 0; i < s.length(); i++) {
    	res += hash[s[i]];
    }
    
    cout << res << endl;
    return 0;
}

とにかく,久々に描いてみたらわからないところだらけで最悪だった.(セミコロンつけることすら忘れまくってた)

まず,mapがわからないので,mapを調べてくる.
最初unordered_mapを使おうとしたが,わからなかったので,放置.覚えてたらまた調べる.
C++ ハッシュ連想配列クラス unordered_map 入門

結局普通のmapの使い方を学ぶ.
C++での動的配列(set,map)の使い方まとめ | Futurismo

stringとcharの違いと意識しなければならない事自体が久々で,非常に気持ちが悪かったのは内緒.

登録のところがかなりアホくさいが,アレで限界だった.
改善案としては配列化してしまって,回すのだろうか,ああでもマジックナンバーとしてアスキーコードがはいっていて気持ちが悪い.

    // entry
    int arr[10] = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6};
    for(int i = 0; i < 10; i++) {
    	hash[i + 48] = arr[i];
    }

で,次はstringの扱い方がわからないので,メソッドを探す,ここではfor文のための長さがわかるメソッドを探していた.

C++文字列(std::string)

このリンクは非常によくメソッドがまとまっているので,また活用したいと思う.


最後は完全にコンパイルの方法を忘れていたので,ここを参照.

プログラミング :: 初めての C++ :: コンパイルと実行

私のPCでは,MinGWをつかったコンパイルが可能なので,

g++ filename.cpp -o outputname

みたいなコンパイルをした.


で,テストして提出.とても大変だった.


教訓:C++のマクロを作っておいたほうが良い.探すのが大変である.

おまけ

HackerEarth用のリポジトリを作っておいた.

github.com


これからC++も活用していきたいと思っているので,がんばろう…
C++はやっぱり早いからね(白目)