Я пытаюсь сделать что-то, казалось бы, тривиальное: использовать функцию std::sort
на std::vector<float>
. Это проблема, на которую я не могу найти ответа. Для справки, вот первый бит функции, которую я использую:
std::vector<std::string> MassDawg::search(std::vector<float> sequence, int ppmTol){
MassDawgNode * currentNode = this->root;
if (sequence.empty()) return std::vector<std::string> {};
std::sort(sequence.begin(), sequence.end(), std::less<float>());
Примечание Я пробовал использовать эту функцию сортировки без std::less<float>()
с той же проблемой.
Этот код отлично работает на моем MacBook Pro (13 дюймов 2016 года на macOS 10.15.5). Он компилируется и отлично работает на моем ноутбуке с использованием C ++ 11. Проблема связана с моим pu sh на github. У меня есть следующие настройки действий:
name: build and test
# Controls when the action will run. Triggers the workflow on push or pull request
# events but only for the master branch
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v2
# Runs a set of commands using the runners shell
- name: Build and test
run: |
chmod u+x build_and_test_cc.sh
echo Building and testing
./build_and_test_cc.sh
echo Done
Мой сценарий оболочки ./build_and_test_cc
- это небольшой сценарий, который просто запускает мой make-файл и запускает мои unittests (я использую catch.h
).
Опять же, проблема возникает только ПОСЛЕ добавления функции сортировки. Если я удалю эту строку, все будет нормально. Вот мой make-файл.
# Variables
CC = clang++
CFLAGS = -Wall -g -std=c++11
# Executable
main: main.o MassDawg.o MassDawgNode.o utils.o
$(CC) $(CFLAGS) -o main main.o MassDawg.o MassDawgNode.o utils.o
test: test.o MassDawg.o MassDawgNode.o utils.o
$(CC) $(CFLAGS) -o test test.o MassDawg.o MassDawgNode.o utils.o
# Object files
main.o: main.cpp MassDawg.hpp
$(CC) $(CFLAGS) -c main.cpp
test.o: test.cpp MassDawg.hpp
$(CC) $(CFLAGS) -c test.cpp
MassDawg.o: MassDawg.hpp MassDawgNode.hpp utils.hpp
$(CC) $(CFLAGS) -c MassDawg.cpp
MassDawgNode.o: MassDawgNode.hpp
$(CC) $(CFLAGS) -c MassDawgNode.cpp
utils.o: utils.hpp
$(CC) $(CFLAGS) -c utils.cpp
clean:
rm main test *.o
Моя сильная сторона - это не make-файлы, так что это вполне может быть проблемой. Я полностью озадачен и понятия не имею, что могло быть причиной этого. Спасибо