std :: vector的数组不起作用

时间:2017-03-12 12:22:01

标签: c++ c++11 vector

我想管理三个std :: vector并考虑这样的解决方案:

#include <stdlib.h>
#include <vector>

int main() {
  std::vector<int> nums[3];
  nums[0].push_back(1);
  nums[0].push_back(3);
  nums[0].push_back(5);
  nums[1].push_back(10);
  nums[1].push_back(20);
  nums[1].push_back(30);
  nums[2].push_back(100);
  nums[2].push_back(300);
  nums[2].push_back(500);
  nums[2].push_back(700);
  int i;
  for (i = 0; i < nums[0].size(); i++) {
    printf("%d\n", nums[0].at(i));
  }
  for (i = 0; i < nums[1].size(); i++) {
    printf("%d\n", nums[2].at(i));
  }
  for (i = 0; i < nums[2].size(); i++) {
    printf("%d\n", nums[2].at(i));
  }
}

为什么这不起作用?我不了解编译器输出。知道如何解决这个问题吗?

GCC

  

架构x86_64的未定义符号:
  &#34; std :: __ 1 :: __ vector_base_common :: __ throw_length_error()const&#34;,   引自:         void std :: __ 1 :: vector&gt; :: __ push_back_slow_path(int const&amp;)in code-4a0a01.o&#34; std :: __ 1 :: __ vector_base_common :: __ throw_out_of_range()const&#34;,   引自:         代码-4a0a01.o&#34; std :: terminate()&#34;中的std :: __ 1 :: vector&gt; :: at(unsigned long),引自:         ___clang_call_terminate代码-4a0a01.o&#34; operator delete(void *)&#34;,引自:         代码-4a0a01.o中的std :: __ 1 :: __ vector_base&gt; :: ~__vector_base()         代码-4a0a01.o中的std :: __ 1 :: __ split_buffer&amp;&gt; ::〜__split_buffer()
  &#34; operator new(unsigned long)&#34;,引自:         std :: __ 1 :: __ split_buffer&amp;&gt; :: __ split_buffer(unsigned long,unsigned   代码-4a0a01.o中的long,std :: __ 1 :: allocator&amp;)   &#34; ___ cxa_begin_catch&#34;,引自:         ___clang_call_terminate代码-4a0a01.o&#34; ___ gxx_personality_v0&#34;,引自:         _main in code-4a0a01.o         代码-4a0a01.o中的void std :: __ 1 :: vector&gt; :: __ push_back_slow_path(int const&amp;)         代码-4a0a01.o中的Dwarf异常展开信息(__eh_frame)ld:找不到架构x86_64 clang的符号:错误:链接器   命令失败,退出代码为1(使用-v查看调用)

1 个答案:

答案 0 :(得分:1)

您使用的是gcc,它是C编译器。 C编程语言不支持STL(标准模板库)。使用g++,这是C ++编译器。