I am a Java/Android/SpringBoot dev as the day job which are much higher level language/frameworks but before starting a new project and writing hundreds of lines of code to make the latest spaghetti code mess, I (and many others) sit down and physically draw out/sketch an "architecture" that may be a good starting point.
Architecture is like the overall large scale how the application is built up of smaller chunks. Imagine it like having a set of code blocks (called services, controllers, DAOs, databases, etc. depending on what they are for) and drawing out the links between them.
Here is a basic "Android app architecture" :
And a Web Application (Netflix's Billing):
You can see it gives a large scale (very macro) link between some services to how the App is to be structured.
Once you have thought of a good Architecture, you then start to code your app. When writing the individual "services", you then think of the Design Pattern
A Design Pattern is more low level. It is how you are going to organise the code inside services. There are many types of Pattern in Java...like "the singleton pattern", "the observer pattern", the "factory pattern" all of which have benefits and drawbacks. You kinda select the most appropriate one for that part of your app.
There are general books on design patterns and architecture, for many languages, C/++ included. They are much more high level, the whole big picture, and look more at the design principles of Applications (whatever the app is) and focus less on things like "What is a String and what is an int?"
Some C/C++ Design Patterns
It is things like going from writing one big sketch file...to breaking it up in to more "manageable" components and how to fix them together to write clean, portable,readable and re-usable code.
As you code more and more, you become more concerned about "how to plan an app" rather than "how do I do a for loop backwards?".
Hope that helps and gives you a starting point for "more advanced ideas".