Skip to content

Commit f324bf4

Browse files
authored
Merge branch 'main' into logical_or()
2 parents f362a07 + 9701ac2 commit f324bf4

File tree

15 files changed

+1298
-9
lines changed

15 files changed

+1298
-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: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
---
2+
Title: '.at()'
3+
Description: 'Accesses an element at a specified index in a deque with bounds checking.'
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 C++ **`.at()`** [function](https://www.codecademy.com/resources/docs/cpp/functions) accesses the element at a given index in a deque while performing bounds checking. If the index is out of range, the function throws an `std::out_of_range` [exception](https://www.codecademy.com/resources/docs/cpp/exceptions). This makes it a safer alternative to the subscript operator `[]`, which offers no safety checks.
18+
19+
## Syntax
20+
21+
```pseudo
22+
deque.at(pos)
23+
```
24+
25+
**Parameters:**
26+
27+
- `pos`: A zero-based index of the element to access. Must be within the valid range of the deque.
28+
29+
**Return value:**
30+
31+
Returns a reference to the element at the given position.
32+
33+
**Exceptions:**
34+
35+
Throws `std::out_of_range` if `pos` is invalid.
36+
37+
## Example 1: Accessing Elements Safely
38+
39+
In this example, `.at()` retrieves elements from valid positions in the deque:
40+
41+
```cpp
42+
#include <iostream>
43+
#include <deque>
44+
using namespace std;
45+
46+
int main() {
47+
deque<int> numbers = {10, 20, 30, 40};
48+
49+
cout << "Element at index 2: " << numbers.at(2) << endl;
50+
cout << "Element at index 0: " << numbers.at(0) << endl;
51+
52+
return 0;
53+
}
54+
```
55+
56+
The output of this code is:
57+
58+
```shell
59+
Element at index 2: 30
60+
Element at index 0: 10
61+
```
62+
63+
The `.at()` function returns elements at positions 2 and 0 with built-in bounds checking.
64+
65+
## Example 2: Handling Out-of-Range Access
66+
67+
In this example, accessing index 5 triggers an exception because the index is outside the deque's valid range:
68+
69+
```cpp
70+
#include <iostream>
71+
#include <deque>
72+
using namespace std;
73+
74+
int main() {
75+
deque<string> names = {"Ava", "Mira", "Leo"};
76+
77+
try {
78+
cout << names.at(5) << endl;
79+
} catch (const out_of_range& e) {
80+
cout << "Error: " << e.what() << endl;
81+
}
82+
83+
return 0;
84+
}
85+
```
86+
87+
The output of this code is:
88+
89+
```shell
90+
Error: deque::_M_range_check: __n (which is 5)>= this->size() (which is 3)
91+
```
92+
93+
## Codebyte Example
94+
95+
This example demonstrates safe element access and shows how `.at()` behaves when an invalid index is used:
96+
97+
```codebyte/cpp
98+
#include <iostream>
99+
#include <deque>
100+
using namespace std;
101+
102+
int main() {
103+
deque<char> letters = {'A', 'B', 'C', 'D'};
104+
105+
cout << "First element: " << letters.at(0) << endl;
106+
cout << "Third element: " << letters.at(2) << endl;
107+
108+
try {
109+
cout << letters.at(10) << endl;
110+
} catch (const out_of_range& e) {
111+
cout << "Caught exception: " << e.what() << endl;
112+
}
113+
114+
return 0;
115+
}
116+
```
117+
118+
## Frequently Asked Questions
119+
120+
### 1. What is the use of deque in C++?
121+
122+
A deque (double-ended queue) stores elements in a dynamic sequence where insertions and deletions at both the front and back are efficient. It supports random access like a vector but provides faster operations at the beginning of the structure.
123+
124+
### 2. What is a std::deque?
125+
126+
`std::deque` is a standard container that provides a dynamic array-like structure with fast operations at both ends. It is implemented as segmented memory blocks, which allows it to grow without relocating all elements like a vector.
127+
128+
### 3. How to check if deque is empty in C++?
129+
130+
A deque can be checked for emptiness using the `.empty()` method, which returns `true` if it contains no elements and `false` otherwise. This check is constant time and works for all standard containers.
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.

0 commit comments

Comments
 (0)