天天看點

C++ Vector周遊的幾種方式及修改元素值

//第四種周遊方式,auto關鍵字的另一種方式
  cout << "C++11,第四種周遊方式,auto關鍵字" << endl;
  for (auto i : m_testPoint)
  {
    cout << i.x << "  " << i.y << endl;
    i.x += 100;
  }
  //第四種周遊方式,auto 修改元素值不成功 
  cout << "修改元素值失敗" << endl;
  for (auto i : m_testPoint)
  {
    
    cout << i.x << "  " << i.y << endl;
  }      
#include <vector>
#include <iostream>

using namespace std;

struct Point
{
  double x;
  double y;
  Point()
  {
    x = 0;
    y = 0;
  }
};


int main()
{
  vector<Point> m_testPoint;
  m_testPoint.clear();
  m_testPoint.shrink_to_fit();

  for (int i = 0; i < 10; ++i)
  {
    Point temp;
    temp.x = i * i;
    temp.y = i * i;
    m_testPoint.push_back(temp);
  }

  //第一種周遊方式,下标
  cout << "第一種周遊方式,下标通路" << endl;
  for (int i = 0; i < m_testPoint.size(); ++i)
  {
    cout << m_testPoint[i].x << " " << m_testPoint[i].y << endl;
    m_testPoint[i].x += 1000;
  }

  //第一種周遊方式,下标改元素值成功
  cout << "第一種周遊方式,下标通路" << endl;
  for (int i = 0; i < m_testPoint.size(); ++i)
  {
    cout << m_testPoint[i].x << " " << m_testPoint[i].y << endl;
    m_testPoint[i].x -= 1000;

  }



  //第二種周遊方式,疊代器
  cout << "第二種周遊方式,疊代器通路" << endl;
  for (vector<Point>::iterator iter = m_testPoint.begin(); iter != m_testPoint.end(); iter++)
  {
    cout << (*iter).x << "  " << (*iter).y << endl;
    (*iter).y += 100;
  }

  //第二種周遊方式,疊代器修改元素值成功
  cout << "第二種周遊方式,疊代器通路修改元素值" << endl;
  for (vector<Point>::iterator iter = m_testPoint.begin(); iter != m_testPoint.end(); iter++)
  {
    cout << (*iter).x << "  " << (*iter).y << endl;
    (*iter).y -= 100;

  }



  //第三種周遊方式,auto關鍵字
  cout << "C++11,第三種周遊方式,auto關鍵字" << endl;
  for (auto iter = m_testPoint.begin(); iter != m_testPoint.end(); iter++)
  {
    cout << (*iter).x << "  " << (*iter).y << endl;
    (*iter).x += 100;
  }
  //第三種周遊方式, 修改元素值 成功
  cout << "修改元素值" << endl;
  for (auto iter = m_testPoint.begin(); iter != m_testPoint.end(); iter++)
  {
    cout << (*iter).x << "  " << (*iter).y << endl;
    (*iter).x -= 100;
  }


  //第四種周遊方式,auto關鍵字的另一種方式
  cout << "C++11,第四種周遊方式,auto關鍵字" << endl;
  for (auto i : m_testPoint)
  {
    cout << i.x << "  " << i.y << endl;
    i.x += 100;
  }
  //第四種周遊方式,auto 修改元素值不成功 
  cout << "修改元素值失敗" << endl;
  for (auto i : m_testPoint)
  {
    
    cout << i.x << "  " << i.y << endl;
  }
  return 0;
}