标准::矢量数组不起作用

Array of std::vector's doesn't work

本文关键字:不起作用 数组 标准      更新时间:2023-10-16

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

#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("%dn", nums[0].at(i));
  }
  for (i = 0; i < nums[1].size(); i++) {
    printf("%dn", nums[2].at(i));
  }
  for (i = 0; i < nums[2].size(); i++) {
    printf("%dn", nums[2].at(i));
  }
}

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

GCC:

架构的未定义符号x86_64:
" std :: __ 1 :: __ vector_base_common :: __ thft_length_error()const", 引用以下参考: void std :: __ 1 :: vector> :: __ push_back_slow_slow_path(int const&amp;)在Code-4A0A01.O中 引用以下参考: std :: __ 1 :: vector> :: at code-4A0A01.O中的(unsigned long)。 _____clang_call_call_terminate在Code-4A0A01.O中"操作员删除(void*)",从: std :: __ 1 :: __ vector_base> :: 〜_______vector_base()in Code-4A0A01.O中 std :: __ 1 :: __ split_buffer&amp;> :: 〜__ __split_buffer()在Code-4A0A01.O
中 "操作员新(未签名长)",从: std :: __ 1 :: __ split_buffer&amp;> :: __ split_buffer(未签名长,未签名 长,std :: __ 1 ::分配器&amp;)在Code-4A0A01.O
中 " ____cxa_begin_catch",从: ____clang_call_call_terminate在Code-4A0A01.O中 _ code-4A0A01.O中的Main void std :: __ 1 :: vector> :: __ push_back_slow_path(int const&amp;)in Code-4A0A01.O中 Code-4A0A01.O LD中的矮人异常易位信息(__EH_FRAME):shipdecture x86_64 clang:错误:链接器 命令失败,出口代码1(使用-v查看调用)

您正在使用gcc,即C编译器。C编程语言不支持STL(标准模板库)。使用g++,即C 编译器。