There are easier languages to get started with than C++.
If you are willing to consider a new language, I like Python as a first language. Its advanced data types are much easier to use than C++'s standard template library.
Another advantage of Python is that it is an "interpreted" language so you can start it in an interactive mode that lets you execute program commands one at a time and see how they work.
For your assembler you need to have a Symbol Table that matches symbol names with their addresses. This is very easy in Python using dictionaries. Dictionaries are like arrays that have strings as indexes instead of numbers.
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> table = {} # Create an empty dictionary
>>> table['Fred'] = 17
>>> table['Wilma'] = 23
>>> print(table['Fred'])
17
>>>
You can also use dictionaries to do the command to binary translation. For example, here's the start of my assembler's dictionary that translates the computation part of C-commands:
compDict = {'0': '0101010',
'1': '0111111',
'-1': '0111010',
'D': '0001100',
'A': '0110000',
'!D': '0001101',
'!A': '0110001',
'-D': '0001111',
'-A': '0110011',
'D+1': '0011111',
'A+1': '0110111',
C++ has a similar datatype called a "map", but it's harder to use because you need to declare what type of data its indexes and values are. See this link for a C++ example:
http://www.cprogramming.com/tutorial/stl/stlmap.html--Mark