【问题标题】:Printing contents of a vector [duplicate]打印矢量的内容[重复]
【发布时间】:2018-05-11 05:37:00
【问题描述】:

我正在尝试体验 C++,我想打印一个向量的内容,或者,为了确认我的程序是正确的,我可以添加我的向量的内容并打印结果。

这是我的代码:

#include <iostream>
#include <vector>

using std::vector;
using std::cin;
using std::cout;

int main(){
  int n;
  vector<int> result;
  cin >> n;
  vector<int> numbers(n);
  for(int i = 0; i < n; ++i){
    cin >> numbers[i];
  }
  result = numbers;
  cout << result;
  return 0;
}

我在网上找到了一些打印矢量的解决方案,但我不明白代码在做什么,所以我希望有人能提供帮助。

【问题讨论】:

  • 你期待什么结果,你得到了什么?
  • 不适用于 SO 尝试 CR
  • 您是否尝试过自己搜索?已经有一个关于 SO 的问题,名称几乎相同。“我不明白代码在做什么”所以,是时候获取good C++ book 了。 SO 不是教程服务。
  • @JakeFreeman 看到这段代码无法编译,它绝对不属于代码审查。请参阅他们的help page,以更好地了解为什么这不适合。
  • @scohe001 好的,只是一个建议,以防有人编译它

标签: c++ c++11


【解决方案1】:

正如你提到的“我不明白代码在做什么”,让我简要描述一下如何迭代容器:

漫长的路:

vector<int> result = { 1,2,3 };

for (vector<int>::iterator it = result.begin(); it != result.end() ; it++) {
    int i = *it;
    cout << i << " ";
}

每个容器都提供了一个迭代器,您可以将它想象成一个沿着容器元素向前移动的指针。 begin() 返回指向第一个元素的指针,end() 返回指向最后一个元素之后的 1 的指针。取消引用迭代器会给出实际值。

对于上述很长的路要走,对于range-based for loops,C++ 提供了一个含义大致相同的速记符号(即它利用了迭代器概念,但在符号上不那么“笨拙”):

for (auto i : result) {
    cout << i << " ";
}

试试看;希望有帮助。

【讨论】:

  • @Stephen Lechner 感谢您的解释和代码!
【解决方案2】:

您可以通过循环打印向量大小中的每个索引来打印向量内容

喜欢

for(int i=0;i<numbers.size();i++){
 cout<<numbers[i];
 }

循环将打印每个索引,直到向量结束

【讨论】:

  • 这是vector,不是胜利者。
  • @AlgirdasPreidžius 谢谢
  • @Mohamed Mo'nes - 感谢您的回复和信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2017-01-24
  • 1970-01-01
相关资源
最近更新 更多