sicp-enjoyer
Joined 4 years ago
Joined 4 years ago
Just to add, here are a few other things that also limit your day to day freedom and add some risk of legal nightmares:
- operating a business
- owning a home or other building
- running for political office
- raising a child
- using a professional license (medical, law, civil engineer, etc)
The rate dramatically changes with demographic, for example many of those were married young and did not complete education.
> who you pick to marry
The quote doesn't say whether :) Married men also tend to make more money and work for longer periods of time. There is a cynical view of whether that's good or not, but 40-50 year old single men don't seem to be a particularly successful demographic.
I think I agree with 1 year out, but I would be surprised if this hasn't been going on for longer.
But yes, you either need to stop occasionally and remove the duplicates or use a set, if the storage is prohibitive.
Otherwise in terms of performance, sorting and unique is much faster than inserting one element at a time in a set.
This post doesn't think so: https://stackoverflow.com/questions/5889238/why-is-xor-the-d...
std::map actually seems to fit this role better. It works reasonable well for many workloads and types without tuning a bunch of parameters.
Complexity is not a measure of runtime. The performance drawbacks for std::map have to do with cache, not O(log) vs O(1). log(billion) is 30. And that's exactly how many comparisons you have to do, not a constant multiple of that.
With an open addressing hash table, who knows how many steps you will need to find an element. It's even more questionable if it does linked list chaining.
> binary search tree.
It's usually a red black tree and maybe could be a b-tree? "Search tree" is accurate.
This also presupposes that making a fast program is a lot more work. However poor performance is usually due to negligence rather than a lack of optimization effort. All you need to write reasonably fast code by default (without micro-optimizing) is:
1. a good knowledge of available algorithms 2. a good understanding of the problem
1. Is a one-time investment on the programmers part that benefits all future programs they write. There is no marginal cost to being familiar with what's available in <algorithm>. 2. Has a marginal cost, but it's probably a time saver anyway. Measure once, cut twice.