1. 放入資料
印出資料1
印出資料2
#include <iostream>
#include <vector>
using namespace std;
void PrintVector1(vector<int> printVector); //印出方法1
void PrintVector2(vector<int> printVector); //印出方法2
int main()
{
vector<int> myVector;
for (int i = 0; i < 5; i++)
myVector.push_back(i * 10);
PrintVector1(myVector);
PrintVector2(myVector);
system("pause");
return 0;
}
//印出方法1
void PrintVector1(vector<int> printVector)
{
vector<int>::iterator it;
for (it = printVector.begin(); it != printVector.end(); it++)
cout << *it << endl;
}
//印出方法2
void PrintVector2(vector<int> printVector)
{
for (int i = 0; i < (int)printVector.size(); i++)
cout << printVector[i] << endl;
}
2. 是否有資料
#include <iostream>
#include <vector>
using namespace std;
bool IsContains(vector<int> vecData, int nElement); //是否有這資料
int main()
{
vector<int> myVector;
for (int i = 0; i < 5; i++)
myVector.push_back(i * 10);
cout << IsContains(myVector, 5) << endl;
cout << IsContains(myVector, 20) << endl;
system("pause");
return 0;
}
//是否有這資料
bool IsContains(vector<int> vecData, int nElement)
{
vector<int>::iterator findIt = std::find(vecData.begin(), vecData.end(), nElement);
if (findIt == vecData.end())
return false;
else
return true;
}
3. 插入資料
必須先找到要插入的 it 位置
#include <iostream>
#include <vector>
using namespace std;
void PrintVector1(vector<int> printVector);
//如果要 return iterator 必須傳入指標
vector<int>::iterator GetVectorItByIndex(vector<int>* pVector, int nIndex);
int main()
{
vector<int> myVector;
for (int i = 0; i < 5; i++)
myVector.push_back(i * 10);
PrintVector1(myVector);
cout << endl;
vector<int>::iterator it;
it = GetVectorItByIndex(&myVector, 2); //找到 index 2
myVector.insert(it, 15); //在 index 2 插入數字 15
PrintVector1(myVector);
system("pause");
return 0;
}
vector<int>::iterator GetVectorItByIndex(vector<int>* pVector, int nIndex)
{
if (nIndex < 0 || nIndex >= (int)pVector->size())
return pVector->end();
vector<int>::iterator it;
it = pVector->begin();
for (int i = 0; i < nIndex; i++)
it++;
return it;
}
void PrintVector1(vector<int> printVector)
{
vector<int>::iterator it;
for (it = printVector.begin(); it != printVector.end(); it++)
cout << *it << endl;
}
4. 刪除資料
必須先找到欲刪除資料的 it 位置
#include <iostream>
#include <vector>
using namespace std;
void PrintVector1(vector<int> printVector);
//如果要 return iterator 必須傳入指標
vector<int>::iterator GetVectorItByElement(vector<int>* pVector, int nElement);
vector<int>::iterator GetVectorItByIndex(vector<int>* pVector, int nIndex);
int main()
{
vector<int> myVector;
for (int i = 0; i < 5; i++)
myVector.push_back(i * 10);
PrintVector1(myVector);
cout << endl;
vector<int>::iterator it;
it = GetVectorItByIndex(&myVector, 2); //找到 index 2
myVector.erase(it);//刪除 index 2 的資料
vector<int>::iterator it2;
it2 = GetVectorItByElement(&myVector, 40); //找到數值資料 40
myVector.erase(it2);//刪除數值資料 40
PrintVector1(myVector);
system("pause");
return 0;
}
vector<int>::iterator GetVectorItByElement(vector<int>* pVector, int nElement)
{
vector<int>::iterator findIt = std::find(pVector->begin(), pVector->end(), nElement);
return findIt;
}
vector<int>::iterator GetVectorItByIndex(vector<int>* pVector, int nIndex)
{
if (nIndex < 0 || nIndex >= (int)pVector->size())
return pVector->end();
vector<int>::iterator it;
it = pVector->begin();
for (int i = 0; i < nIndex; i++)
it++;
return it;
}
void PrintVector1(vector<int> printVector)
{
vector<int>::iterator it;
for (it = printVector.begin(); it != printVector.end(); it++)
cout << *it << endl;
}
C++ 的 STL-在迴圈中刪除 iterator
https://husking-studio.com/cpp-iterator-erase-in-loop/