Skip to content

Commit 67584c4

Browse files
authored
Merge branch 'main' into cpp-math-functions-isgreaterequal
2 parents a4d1219 + 1b69ce4 commit 67584c4

File tree

11 files changed

+824
-9
lines changed

11 files changed

+824
-9
lines changed

CONTRIBUTING.md

Lines changed: 54 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,6 @@ To link your Codecademy user profile to GitHub:
133133
- Typos/bugs
134134
- Plagiarism
135135

136-
## What is the policy for using generative AI?
137-
138-
We will not accept entries that were exclusively generated through an AI tool. We have this policy because:
139-
140-
- AI-generated content is often confidently incorrect, leading to the spread of inaccurate or misleading information.
141-
- We provide authorship credit for submissions, and to submit AI-generated work under one's own name would be a violation of our plagiarism policy.
142-
- Docs is an educational space for people to learn how to write effective technical documentation. Using generative AI, at this point, negatively impacts that desired learning goal.
143-
144136
## How do we update a PR branch?
145137

146138
To keep your PR branch up to date, navigate to the branch on your fork. Then press `Fetch upstream` and `Fetch and merge`.
@@ -158,6 +150,60 @@ git rebase upstream main
158150
git push
159151
```
160152

153+
## Can I use AI tools when contributing?
154+
155+
Yes! You can use AI tools to help create our Docs entries. [Codecademy Docs](https://github.com/Codecademy/docs) is an open-source project designed to help you learn how to contribute to open source, collaborate with the community, and use GitHub. It’s not meant to test whether you can write perfect technical content on your own.
156+
157+
AI can assist you with drafting, rewriting, or structuring content. However, you are responsible for ensuring your work meets Codecademy’s quality and [style standards](https://github.com/Codecademy/docs/blob/main/documentation/content-standards.md). AI is a tool to help you, but it doesn't replace the standards we expect.
158+
159+
You're accountable for all AI-assisted content.
160+
161+
You may use AI to generate drafts or refine your writing, but you must personally review and improve all AI-assisted content before submitting. Every entry must follow:
162+
163+
- [The Docs entry template](https://github.com/Codecademy/docs/blob/main/documentation/term-entry-template.md)
164+
- [Our content standards](https://github.com/Codecademy/docs/blob/main/documentation/content-standards.md)
165+
- [Our style guidelines](https://github.com/Codecademy/docs/blob/main/documentation/style-guide.md)
166+
167+
> **Note:** If we detect plagiarism in your entry, you will be banned from contributing to Docs.
168+
169+
## What you need to verify
170+
171+
Even if AI produced the initial version of the entry, you must ensure that:
172+
173+
- The content is accurate, technically correct, and fact-checked.
174+
- All explanations are clear and aligned with Codecademy Docs writing style.
175+
- Code examples compile or run correctly when required.
176+
- The text is not plagiarized or copied from external sources.
177+
- The final entry sounds intentional, not generic, or filled with filler text.
178+
- The formatting follows the Docs template exactly.
179+
180+
AI output often contains vague definitions, hallucinated details, or inconsistent explanations. You must correct and refine these issues before submitting a pull request.
181+
182+
## Quality standards apply to all entries
183+
184+
Regardless of how you created the content, every entry must:
185+
186+
- Use original wording.
187+
- Include accurate definitions and examples.
188+
- Follow the required structure, headings, and formatting.
189+
- Maintain a simple, educational, and neutral tone.
190+
- Avoid unnecessary complexity or overly broad explanations.
191+
- Fit the scope of a Docs reference entry.
192+
193+
> **Note:** If your submission doesn't meet these standards, we'll ask you to revise it.
194+
195+
## What happens during review?
196+
197+
Maintainers (Codecademy’s content team who reviews all contributions) may request edits on any AI-assisted entry if it:
198+
199+
- Does not follow our template.
200+
- Contains unclear, generic, or contradictory information.
201+
- Includes mistakes or technical inaccuracies.
202+
- Appears copied.
203+
- Lacks the clarity expected from Docs entries.
204+
205+
You're expected to respond to feedback and make the requested improvements within 1 week, or your PR will be closed due to inactivity.
206+
161207
Remember, if you ever have any questions at all, we're always here to help in the [Codecademy Forums](https://community.codecademy.com/).
162208

163209
If you find any bugs or errors in the content, feel free to file an issue [here](https://github.com/Codecademy/docs/issues/new?assignees=Name+here&labels=bug&template=bug_reports.yml&title=%5BBug%2FError%5D+Subject%3A+Entry+Name)! 🖖

bin/concept-of-the-week.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
content/kotlin/concepts/strings/strings.md
1+
content/kotlin/concepts/classes/classes.md
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
---
2+
Title: 'size()'
3+
Description: 'Returns the number of elements in a deque container.'
4+
Subjects:
5+
- 'Computer Science'
6+
- 'Game Development'
7+
Tags:
8+
- 'Containers'
9+
- 'Deques'
10+
- 'Methods'
11+
- 'STL'
12+
CatalogContent:
13+
- 'learn-c-plus-plus'
14+
- 'paths/computer-science'
15+
---
16+
17+
The **`size()`** function returns the number of elements currently stored in a [`std::deque`](https://www.codecademy.com/resources/docs/cpp/deque) container. It has constant time complexity (`O(1)`) and is marked noexcept since C++ 11.
18+
19+
## Syntax
20+
21+
```pseudo
22+
deque_object.size();
23+
```
24+
25+
**Parameters:**
26+
27+
This function does not take any parameters.
28+
29+
**Return value:**
30+
31+
Returns a value of type `size_type` (an unsigned integral type) representing the number of elements in the deque.
32+
33+
## Example 1
34+
35+
In this example, the size method is used to check the element count of an initially empty deque, then after [`push_back`](https://www.codecademy.com/resources/docs/cpp/deque/push-back) operations:
36+
37+
```cpp
38+
#include <deque>
39+
#include <iostream>
40+
41+
int main() {
42+
std::deque<int> d;
43+
std::cout << "Initial size: " << d.size() << "\n";
44+
45+
for (int i = 0; i < 5; ++i) {
46+
d.push_back(i);
47+
}
48+
std::cout << "Size after push_back 5 elements: " << d.size() << "\n";
49+
50+
return 0;
51+
}
52+
```
53+
54+
The output of this code is:
55+
56+
```shell
57+
Initial size: 0
58+
Size after push_back 5 elements: 5
59+
```
60+
61+
## Example 2
62+
63+
In this example, the size method is used after insert and pop operations to illustrate dynamic changes in element count:
64+
65+
```cpp
66+
#include <deque>
67+
#include <iostream>
68+
69+
int main() {
70+
std::deque<int> d = {1, 2, 3};
71+
std::cout << "Initial size: " << d.size() << "\n";
72+
73+
d.pop_front();
74+
d.pop_back();
75+
std::cout << "Size after two pops: " << d.size() << "\n";
76+
77+
d.insert(d.begin(), 10);
78+
std::cout << "Size after one insert at front: " << d.size() << "\n";
79+
80+
return 0;
81+
}
82+
```
83+
84+
The output of this code is:
85+
86+
```shell
87+
Initial size: 3
88+
Size after two pops: 1
89+
Size after one insert at front: 2
90+
```
91+
92+
## Codebyte Example
93+
94+
In this example, the `size()` method is repeatedly checked in a loop until the deque becomes empty:
95+
96+
```codebyte/cpp
97+
#include <iostream>
98+
#include <deque>
99+
100+
int main() {
101+
std::deque<char> letters = {'A', 'B', 'C', 'D', 'E'};
102+
103+
while (!letters.empty()) {
104+
std::cout << "Current size: " << letters.size() << " front element: " << letters.front() << "\n";
105+
letters.pop_front();
106+
}
107+
108+
std::cout << "Final size after emptying: " << letters.size() << "\n";
109+
return 0;
110+
}
111+
```
112+
113+
## Frequently Asked Questions
114+
115+
### 1. What does `size()` do in C++?
116+
117+
The `size()` function in C++ returns the number of elements present in a container, such as a `std::deque`, `std::vector`, or `std::string`. It gives the current length of the container in constant time (`O(1)`) without modifying it.
118+
119+
### 2. What is a deque function in C++?
120+
121+
A deque (double-ended queue) in C++ is a Standard Template Library (STL) container that allows insertion and deletion of elements from both the front and back efficiently.
122+
123+
### 3. How to get the size of a deque in C++?
124+
125+
You can get the number of elements in a deque using the `size()` member function.
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
---
2+
Title: 'emplace()'
3+
Description: 'Constructs a new element at the end of the queue in-place using forwarded arguments.'
4+
Subjects:
5+
- 'Code Foundations'
6+
- 'Computer Science'
7+
Tags:
8+
- 'Containers'
9+
- 'Methods'
10+
- 'Queues'
11+
CatalogContent:
12+
- 'learn-c-plus-plus'
13+
- 'paths/computer-science'
14+
---
15+
16+
The **`emplace()`** method of the `std::queue<T,Container>` container adaptor constructs a new element directly in the underlying container at the back of the queue, forwarding the provided arguments to the constructor of `T`. Because the object is constructed in place, this can improve performance for types with expensive copy or move operations.
17+
18+
## Syntax
19+
20+
```pseudo
21+
queue.emplace(args...)
22+
```
23+
24+
**Parameters:**
25+
26+
- `args...` (variadic template parameters): Arguments forwarded to construct the new element of type `T`.
27+
28+
**Return value:**
29+
30+
Since C++17: A reference to the inserted element (the value returned by the underlying container's `emplace_back` method).
31+
32+
## Example 1: Enqueueing log entries into a queue
33+
34+
In this example, log messages are constructed in place and enqueued for later processing:
35+
36+
```cpp
37+
#include <iostream>
38+
#include <queue>
39+
#include <string>
40+
41+
struct LogEntry {
42+
std::string level;
43+
std::string message;
44+
LogEntry(std::string lvl, std::string msg)
45+
: level(std::move(lvl)), message(std::move(msg)) {}
46+
};
47+
48+
int main(){
49+
std::queue<LogEntry> logs;
50+
logs.emplace("INFO", "Application started");
51+
logs.emplace("WARN", "Low disk space");
52+
logs.emplace("ERROR", "Out of memory");
53+
54+
while(!logs.empty()){
55+
const auto& entry = logs.front();
56+
std::cout << "[" << entry.level << "] " << entry.message << "\n";
57+
logs.pop();
58+
}
59+
}
60+
```
61+
62+
The output of this code is:
63+
64+
```shell
65+
[INFO] Application started
66+
[WARN] Low disk space
67+
[ERROR] Out of memory
68+
```
69+
70+
## Example 2: Constructing tasks in a task queue
71+
72+
In this example, tasks with multiple constructor parameters are constructed directly inside the queue:
73+
74+
```cpp
75+
#include <iostream>
76+
#include <queue>
77+
#include <functional>
78+
79+
struct Task {
80+
int id;
81+
std::string description;
82+
Task(int i, std::string desc)
83+
: id(i), description(std::move(desc)) {}
84+
void run() const { std::cout << "Running task #" << id << ": " << description << "\n"; }
85+
};
86+
87+
int main(){
88+
std::queue<Task> taskQueue;
89+
taskQueue.emplace(1, "Load configuration");
90+
taskQueue.emplace(2, "Initialize modules");
91+
taskQueue.emplace(3, "Start services");
92+
93+
while(!taskQueue.empty()){
94+
taskQueue.front().run();
95+
taskQueue.pop();
96+
}
97+
}
98+
```
99+
100+
The output of this code is:
101+
102+
```shell
103+
Running task #1: Load configuration
104+
Running task #2: Initialize modules
105+
Running task #3: Start services
106+
```
107+
108+
## Codebyte Example: Buffering sensor data with emplace
109+
110+
In this example, sensor readings are constructed and enqueued as soon as they arrive, minimizing overhead:
111+
112+
```codebyte/cpp
113+
#include <iostream>
114+
#include <queue>
115+
#include <tuple>
116+
117+
struct SensorData {
118+
int sensorId;
119+
double value;
120+
long timestamp;
121+
SensorData(int id, double val, long ts)
122+
: sensorId(id), value(val), timestamp(ts) {}
123+
void print() const {
124+
std::cout << "Sensor#" << sensorId
125+
<< " value=" << value
126+
<< " time=" << timestamp << "\n";
127+
}
128+
};
129+
130+
int main(){
131+
std::queue<SensorData> buffer;
132+
buffer.emplace(101, 23.5, 1617181920L);
133+
buffer.emplace(102, 19.8, 1617181930L);
134+
135+
while(!buffer.empty()){
136+
buffer.front().print();
137+
buffer.pop();
138+
}
139+
140+
return 0;
141+
}
142+
```

0 commit comments

Comments
 (0)