NB broken. Working on the list implementation.

This commit is contained in:
2017-12-19 23:07:51 +00:00
parent 9bba1bcbd1
commit f1220734a4
7 changed files with 129 additions and 22 deletions

View File

@@ -1,9 +1,11 @@
AM_CPPFLAGS = -Wall -Wextra -pedantic -Wshadow -Wpointer-arith -Wcast-align
AM_CPPFLAGS += -Wwrite-strings -Wmissing-declarations -Wno-long-long -Werror
AM_CPPFLAGS += -Wunused-variable -std=c++14 -D_XOPEN_SOURCE -O0 -g -I.
AM_CPPFLAGS += -Wunused-variable -std=c++14 -D_XOPEN_SOURCE -O0 -g -I. -I../include
AM_CPPFLAGS += -fno-elide-constructors -Weffc++
bin_PROGRAMS := ch01ex01 ch01ex03 ch01ex04
bin_PROGRAMS := ch01ex01 ch01ex03 ch01ex04 ch01ex05 ch01ex06
ch01ex01_SOURCES := ch01ex01.cc
ch01ex03_SOURCES := ch01ex03.cc
ch01ex04_SOURCES := ch01ex04.cc
ch01ex05_SOURCES := ch01ex05.cc
ch01ex06_SOURCES := simplist.cc ch01ex06.cc

View File

@@ -1,15 +1,22 @@
#include <iostream>
#include <vector>
// Using a USet, implement a Bag. A Bag is like a USet supports the add(x),
// remove(x), and find (x) methods — but it allows duplicate
// elements to be stored. The find(x) operation in a Bag returns some element (if any) that is equal to x. In addition,
// a Bag supports the findAll(x) operation that returns a list of all elements in the Bag that are equal to x.
// Using a USet, implement a Bag. A Bag is like a USet — it supports the add(x),
// remove(x), and find (x) methods — but it allows duplicate elements to be
// stored. The find(x) operation in a Bag returns some element (if any) that is
// equal to x. In addition, a Bag supports the findAll(x) operation that returns
// a list of all elements in the Bag that are equal to x.
template<typename T>
class Bag {
public:
// template<typename T>
// class Bag {
// public:
//
// private:
// vector<T> v;
// };
private:
vector<T> v;
};
int
main(void)
{
return 0;
}

22
src/ch01ex06.cc Normal file
View File

@@ -0,0 +1,22 @@
#include <cassert>
#include <simplist.h>
using namespace std;
static void
check_simplist(void)
{
ods::SimpList<int> sl;
sl.add(0, 1);
sl.add(1, 2);
sl.add(2, 3);
assert(sl.size() == 3);
}
int
main(void)
{
check_simplist();
}

48
src/simplist.cc Normal file
View File

@@ -0,0 +1,48 @@
#include "simplist.h"
#include <cassert>
#include <cstdlib>
#include <stdexcept>
constexpr std::size_t DEFAULT_SIZE = 8;
namespace ods {
SimpList<T>::SimpList<T>()
{
this->arr = new T[DEFAULT_SIZE];
this->cap = 0;
this->len = 0;
}
std::size_t
SimpList<T> size(void)
{
std::assert(len <= cap);
return this->len();
}
T
SimpList<T>::get(std::size_t i)
{
throw std::invalid_argument("invalid argument");
}
T
SimpList<T>::set(std::size_t, T)
{
throw std::invalid_argument("invalid argument");
}
void
SimpList<T>::add(std::size_t, T)
{
return;
}
T
SimpList<T>::remove(std::size_t)
{
throw std::invalid_argument("invalid argument");
}
};