array, array, vector, yay
This commit is contained in:
parent
86c0368a04
commit
133098604d
1 changed files with 31 additions and 21 deletions
|
@ -6,8 +6,7 @@ void classic() {
|
||||||
int array[2];
|
int array[2];
|
||||||
array[0] = 1;
|
array[0] = 1;
|
||||||
array[1] = 2;
|
array[1] = 2;
|
||||||
// array[3] = 3; <- clang++ -Warray-bounds warns about this
|
array[3] = 3; // <- clang++ -Warray-bounds warns about this
|
||||||
// array[4] = 4; <- clang++ -Warray-bounds warns about this
|
|
||||||
|
|
||||||
int n = 10;
|
int n = 10;
|
||||||
std::cout << array[3] << std::endl; // no warning!
|
std::cout << array[3] << std::endl; // no warning!
|
||||||
|
@ -15,42 +14,53 @@ void classic() {
|
||||||
std::cout << array[n-1] << std::endl; // no warning!
|
std::cout << array[n-1] << std::endl; // no warning!
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME
|
|
||||||
void std_array() {
|
void std_array() {
|
||||||
std::array<int, 2> array;
|
std::array<int, 2> array;
|
||||||
array[0] = 1;
|
array[0] = 1;
|
||||||
array[1] = 2;
|
array.at(1) = 2;
|
||||||
array[3] = 3; // XXX <- clang++ -Warray-bounds warns about this
|
|
||||||
// array[4] = 4; <- clang++ -Warray-bounds warns about this
|
|
||||||
|
|
||||||
int n = 10;
|
// whoopsie
|
||||||
std::cout << array[3] << std::endl; // no warning!
|
array[2] = 3;
|
||||||
std::cout << array[4] << std::endl; // no warning!
|
|
||||||
std::cout << array[n-1] << std::endl; // no warning!
|
for(auto &e: array) {
|
||||||
|
std::cout << e << " ";
|
||||||
|
}
|
||||||
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
try {
|
||||||
|
std::cout << array.at(2) << std::endl;
|
||||||
|
} catch (std::out_of_range e) {
|
||||||
|
std::cout << "cool, got std::out_of_range." << std::endl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME
|
|
||||||
void std_vector() {
|
void std_vector() {
|
||||||
std::vector<int> vector;
|
std::vector<int> vector(1);
|
||||||
vector[0] = 1;
|
vector[0] = 1;
|
||||||
vector[1] = 2;
|
try {
|
||||||
|
vector.at(2) = 999;
|
||||||
|
} catch (std::out_of_range e) {
|
||||||
|
std::cout << "cool, got std::out_of_range." << std::endl;
|
||||||
|
}
|
||||||
|
vector.resize(10);
|
||||||
|
vector.at(2) = 3;
|
||||||
|
vector[1] = 2; // should now work
|
||||||
// vector[3] = 3; // SEGFAULT
|
// vector[3] = 3; // SEGFAULT
|
||||||
// vector[4] = 4; <- clang++ -Warray-bounds warns about this
|
|
||||||
|
|
||||||
int n = 10;
|
for(auto &e: vector) {
|
||||||
// std::cout << vector[3] << std::endl; // no warning!
|
std::cout << e << " ";
|
||||||
// std::cout << vector[4] << std::endl; // no warning!
|
}
|
||||||
// std::cout << vector[n-1] << std::endl; // no warning!
|
std::cout << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
std::cout << "classic()" << std::endl;
|
std::cout << "== classic()" << std::endl;
|
||||||
classic();
|
classic();
|
||||||
|
|
||||||
std::cout << "std_array()" << std::endl;
|
std::cout << "== std_array()" << std::endl;
|
||||||
std_array();
|
std_array();
|
||||||
|
|
||||||
std::cout << "std_vector()" << std::endl;
|
std::cout << "== std_vector()" << std::endl;
|
||||||
std_vector();
|
std_vector();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue