0
我想在C++中編寫一組(在數學sens),但我有問題。當我啓動我的程序時,我有「矢量標記超出範圍」錯誤。我正在使用Visual Studio,並沒有顯示任何錯誤。對不起,我的壞語言。向量超出範圍C++
#include "Set.h"
template <class T>
void Set<T>::print() {
cout << endl << "{";
for(int i = 0; i < set.size() - 1; i++) {
cout << set[i] << ", ";
}
//cout << set[set.size()] << "}" << endl;
cout << endl;
}
template <class T>
bool Set<T>::contains(T value) {
for(unsigned int i = 0; i < set.size(); i++) {
if(set[i] == value) return true;
}
return false;
}
template <class T>
void Set<T>::operator +(const T &obj) {
if(!contains(obj)) set.push_back(obj);
}
template <class T>
void Set<T>::operator -(const T &obj) {
if(contains(obj)) {
unsigned int i = 0;
// NIE DZIAŁA
while(i < set.size()) {
if(set[i] == obj) break;
i++;
}
while(i < (set.size() - 1)) {
set[i] = set[i + 1];
i++;
}
//set[i] = set[set.size()];
}
}
template <class T>
Set<T> Set<T>::operator +(const Set<T> &obj) {
Set<T> result;
for(unsigned int i = 0; i < set.size(); i++) {
result + set[i];
}
for(unsigned int i = 0; i < obj.set.size(); i++) {
if(!result.contains(obj.set[i])) {
result + obj.set[i];
}
}
return result;
}
template <class T>
Set<T> Set<T>::operator -(const Set<T> &obj) {
Set<T> result;
for(unsigned int i = 0; i < set.size() - 1; i++) {
if(!contains(obj.set[i])) {
result + set[i];
}
}
return result;
}
template <class T>
Set<T> Set<T>::operator *(const Set<T> &obj) {
Set<T> result;
for(unsigned int i = 0; i < set.size() - 1; i++) {
if(contains(obj.set[i])) {
result + set[i];
}
}
return result;
}
有人可以幫我嗎?
該消息表示您嘗試訪問不存在的矢量元素。你應該使用調試器來找出在哪裏。 –
另外我注意到你在循環中有點不一致,例如我看到了帶有'i
CompuChip
當我試圖減去兩套或產品兩套。 – user2316721